Di SQL Server, Anda dapat menggunakan T-SQL CHARINDEX()
berfungsi untuk menemukan posisi awal ekspresi karakter di dalam ekspresi karakter lain.
Anda memberikan kedua ekspresi karakter sebagai argumen. Anda juga dapat memberikan argumen opsional untuk menentukan posisi untuk memulai pencarian.
Sintaks
Sintaksnya seperti ini:
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
Dimana expressionToFind adalah ekspresi yang ingin Anda temukan di string lain, dan expressionToSearch adalah string lainnya. start_locationoptional opsional dapat digunakan untuk menentukan posisi dalam expressionToSearch untuk memulai pencarian.
Perhatikan bahwa hanya posisi kemunculan pertama yang dikembalikan.
Contoh
Ini contohnya:
SELECT CHARINDEX('Bob', 'Bob suka bir. Bob juga suka daging sapi.') AS Result;
Hasil:
+----------+| Hasil ||----------|| 1 |+----------+
Dalam contoh ini, argumen pertama adalah Bob
, yang berarti kita sedang mencari argumen kedua untuk Bob
. Hasilnya 1 karena itulah posisi Bob
pertama muncul di argumen kedua.
Anda mungkin juga memperhatikan bahwa Bob
sebenarnya muncul dua kali dalam string, tetapi hanya posisi kecocokan pertama yang dikembalikan.
Tidak Cocok
Jika argumen kedua tidak mengandung Bob
hasilnya akan menjadi 0
.
SELECT CHARINDEX('Bob', 'Kate suka bir. Kate juga suka daging sapi.') AS Result;
Hasil:
+----------+| Hasil ||----------|| 0 |+----------+
Menentukan Posisi Awal
Anda dapat (opsional) menentukan posisi awal untuk pencarian. Ini berarti bahwa SQL Server akan melewatkan setiap kejadian yang terjadi sebelum posisi awal tersebut. Namun, hasilnya masih dilaporkan berdasarkan posisinya dalam seluruh string (bukan dari posisi awal yang Anda pilih).
Berikut ini contoh untuk didemonstrasikan:
SELECT CHARINDEX('Bob', 'Bob suka bir. Bob juga suka daging sapi.', 16) AS Result;
Hasil:
+----------+| Hasil ||----------|| 17 |+----------+
Dalam contoh ini kita mulai mencari di posisi 16 (yang kebetulan adalah spasi sebelum Bob
ke-2 ). Hasilnya adalah kemunculan pertama Bob
dilewati, dan posisi yang kedua dikembalikan. Dan kita dapat melihat bahwa posisinya adalah 17 karakter dari awal string (walaupun hanya satu karakter dari tempat kita mulai mencari).
Sensitivitas Huruf Besar
Anda dapat secara eksplisit melakukan pencarian peka huruf besar/kecil dengan menambahkan COLLATE
klausa ke SELECT
. Anda pernyataan:
Berikut adalah contoh yang menyertakan penelusuran peka huruf besar/kecil dan penelusuran peka huruf besar/kecil:
SELECT CHARINDEX('Bir', 'Bob suka bir.' COLLATE Latin1_General_CS_AS) AS 'Sensitif Huruf', CHARINDEX('Bir', 'Bob suka bir.' COLLATE Latin1_General_CI_AS) SEBAGAI 'Peka Huruf Besar-kecil';Hasil:
+------------------+--------------------+| Peka Huruf Besar-kecil | Tidak peka huruf besar/kecil ||-------------------+--------------------|| 0 | 11 |+------------------+--------------------+Yang pertama peka huruf besar/kecil karena
_CS
(dalam susunan) adalah singkatan dari Case-Sensitive. Yang kedua tidak peka huruf besar/kecil karena_CI
singkatan dari Case-Insensitive.