Di MySQL, LOCATE()
fungsi mengembalikan posisi substring dalam string. Lebih khusus lagi, ini mengembalikan posisi kemunculan pertama dalam string, atau kemunculan pertama setelah titik awal tertentu.
Sintaks
Ini dapat digunakan dengan salah satu cara berikut:
LOCATE(substr,str) LOCATE(substr,str,pos)
Dimana substr
adalah substring untuk mencari, dan str
adalah string untuk mencari.
Saat menggunakan sintaks kedua, pos
adalah posisi untuk mulai mencari.
Contoh 1 – Sintaks Pertama
Berikut ini contoh menggunakan sintaks pertama:
SELECT LOCATE('cat', 'One cat jumped over the other cat') AS Result;
Hasil:
+--------+ | Result | +--------+ | 5 | +--------+
Contoh 2 – Sintaks Kedua
Berikut adalah contoh di mana kami menentukan posisi awal untuk mulai mencari:
SELECT LOCATE('cat', 'One cat jumped over the other cat', 6) AS Result;
Hasil:
+--------+ | Result | +--------+ | 31 | +--------+
Dalam hal ini, kemunculan pertama cat
dimulai pada posisi 5, tetapi saya menetapkan pencarian untuk memulai pada posisi 6. Oleh karena itu, posisi kemunculan berikutnya dari string itu adalah yang dikembalikan.
Perhatikan bahwa, meskipun pencarian dimulai pada posisi 6, fungsi tersebut masih mengembalikan posisi substring dalam string – bukan dari posisi awal.
Berikut contoh lain untuk membantu memperjelasnya.
SELECT LOCATE('c', 'a b c', 1) AS 'Result 1', LOCATE('c', 'a b c', 2) AS 'Result 2', LOCATE('c', 'a b c', 4) AS 'Result 3';
Hasil:
+----------+----------+----------+ | Result 1 | Result 2 | Result 3 | +----------+----------+----------+ | 5 | 5 | 5 | +----------+----------+----------+
Hasilnya sama di mana pun kita mulai mencari.
Contoh 3 – Menemukan Bagian dari Kata
Substring dapat menjadi bagian dari kata yang lebih panjang:
SELECT LOCATE('sing', 'Increasingly') AS Result;
Hasil:
+--------+ | Result | +--------+ | 7 | +--------+
Bahkan, tidak ada persyaratan untuk itu bahkan menjadi sebuah kata (setelah semua, kami hanya mencari string):
SELECT LOCATE('z23!#', 'u_4, z23!#') AS 'Result 1', LOCATE(' ', 'a b c') AS 'Result 2', LOCATE(',', 'cat, dog, bird') AS 'Result 3';
Hasil:
+----------+----------+----------+ | Result 1 | Result 2 | Result 3 | +----------+----------+----------+ | 6 | 2 | 4 | +----------+----------+----------+
Contoh 4 – Tidak Ada Yang Cocok
Jika substring tidak ditemukan, 0 dikembalikan:
SELECT LOCATE('Bat', 'Increasingly') AS Result;
Hasil:
+--------+ | Result | +--------+ | 0 | +--------+
Contoh 5 – Sensitivitas Huruf Besar
Fungsi ini multibyte aman, dan peka huruf besar/kecil hanya jika setidaknya satu argumen adalah string biner.
Oleh karena itu, berikut ini berfungsi pada string nonbiner, meskipun kasusnya tidak cocok:
SELECT LOCATE('Sing', 'Increasingly') AS Result;
Hasil:
+--------+ | Result | +--------+ | 7 | +--------+
Tetapi jika kita menggunakan string biner, ini terjadi:
SET @str = BINARY 'Increasingly'; SELECT LOCATE('Sing', @str) AS Result;
Hasil:
+--------+ | Result | +--------+ | 0 | +--------+
Tapi tentu saja, jika kita mengubahnya sehingga kasusnya cocok, kita mendapatkan kecocokan:
SET @str = BINARY 'Increasingly'; SELECT LOCATE('sing', @str) AS Result;
Hasil:
+--------+ | Result | +--------+ | 7 | +--------+
Contoh 6 – Argumen NULL
Jika salah satu argumennya adalah NULL
,
NULL
dikembalikan:
SELECT LOCATE(NULL, 'Increasingly') a, LOCATE('Bat', NULL) b, LOCATE('Bat', 'Increasingly', NULL) c;
Hasil:
+------+------+------+ | a | b | c | +------+------+------+ | NULL | NULL | NULL | +------+------+------+