Banyak RDBMS memiliki INSTR()
fungsi yang memungkinkan kita menemukan substring di dalam string. Beberapa (seperti MySQL dan MariaDB) juga memiliki LOCATE()
fungsi dan POSITION()
fungsi (juga didukung oleh PostgreSQL), yang melakukan hal serupa.
SQL Server tidak memiliki INSTR()
fungsi. Juga tidak memiliki LOCATE()
atau POSITION()
fungsi. Tetapi ia memiliki CHARINDEX()
fungsi yang melakukan hal yang sama.
SQL Server juga memiliki PATINDEX()
fungsi, yang melakukan pekerjaan yang mirip dengan CHARINDEX()
.
CHARINDEX()
Fungsi
Berikut ini contoh CHARINDEX()
fungsi:
SELECT CHARINDEX('news', 'No news is good news');
Hasil:
4
Fungsi menerima argumen ketiga yang memungkinkan kita untuk menentukan di mana memulai pencarian:
SELECT CHARINDEX('news', 'No news is good news', 5);
Hasil:
17
Dalam contoh ini, kami memulai pencarian di posisi 5, setelah dimulainya kemunculan pertama news
, sehingga mengembalikan posisi kemunculan kedua.
PATINDEX()
Fungsi
PATINDEX()
fungsinya mirip dengan CHARINDEX()
, kecuali bahwa ini memungkinkan kita untuk mencari pola, bukan string tertentu.
Berikut ini contoh untuk menggambarkan apa yang saya maksud:
SELECT PATINDEX('%ew%', 'No news is good news');
Hasil:
5
Inilah yang terjadi jika saya menghapus karakter wildcard:
SELECT PATINDEX('ew', 'No news is good news');
Hasil:
0
Lihat PATINDEX()
vs CHARINDEX()
untuk mengetahui lebih lanjut tentang perbedaan antara kedua fungsi ini.