Di MariaDB, LOCATE()
adalah fungsi string bawaan yang mengembalikan posisi kemunculan pertama substring dalam string lain.
LOCATE()
mirip dengan INSTR()
fungsi, kecuali LOCATE()
menyediakan pilihan untuk menentukan posisi awal untuk pencarian. Juga, urutan argumen dibalik antara dua fungsi ini.
Sintaks
LOCATE()
function mendukung sintaks dua argumen, dan sintaks tiga argumen.
Sintaks dua argumen:
LOCATE(substr,str)
Sintaks tiga argumen:
LOCATE(substr,str,pos)
Dimana str
adalah string, substr
adalah substring untuk ditemukan, dan pos
adalah posisi untuk memulai pencarian.
Contoh
Berikut ini contoh dasarnya:
SELECT LOCATE('hot', 'The hot sun');
Hasil:
+-----------------------------+| LOCATE('panas', 'Matahari terik') |+------------------------------+| 5 |+----------------------------+
Posisi Awal
Berikut adalah contoh memberikan posisi awal untuk pencarian:
SELECT LOCATE('hot', 'The hot sun is really hot', 8);
Hasil:
+------------------------------------------------- --+| LOCATE('panas', 'Mataharinya panas banget', 8) |+------------------------------- -----------------+| 23 |+----------------------------------------------- -+
Sensitivitas Huruf Besar
LOCATE()
melakukan pencarian peka huruf besar/kecil:
SELECT LOCATE('HOT', 'The hot sun');
Hasil:
+-----------------------------+| LOCATE('HOT', 'The hot sun') |+-------------------------------+| 5 |+----------------------------+
Beberapa Kejadian
Jika substring muncul lebih dari sekali, hanya posisi substring pertama (dari posisi awal) yang dikembalikan:
SELECT LOCATE('hot', 'The hot sun is really hot');
Hasil:
+--------------------------------------------+| LOCATE('panas', 'Mataharinya panas banget') |+--------------------------------- -----------+| 5 |+-------------------------------------------------------+Ini dia dengan posisi awal:
SELECT LOCATE('hot', 'The hot sun is really hot', 20);
Hasil:
+------------------------------------------------- --+| LOCATE('panas', 'Matahari yang panas benar-benar panas', 20) |+------------------------------- -----------------+| 23 |+----------------------------------------------- -+Kecocokan Parsial
Jika substring adalah bagian dari kata yang lebih besar, itu masih cocok:
SELECT LOCATE('hot', 'The hottest sun');
Hasil:
+----------------------------------+| LOCATE('panas', 'Matahari terpanas') |+----------------------------------+| 5 |+-----------------------------------+Tetapi jika string hanya bagian dari substring, itu tidak cocok:
SELECT LOCATE('hottest', 'The hot sun');
Hasil:
+----------------------------------+| LOCATE('hottest', 'The hot sun') |+----------------------------------+| 0 |+-----------------------------------+Ruang
Karakter spasi masih berupa string, jadi kita dapat menyertakan spasi di substring, meskipun itu satu-satunya karakter:
SELECT LOCATE(' ', 'The hot sun');
Hasil:
+----------------------------+| LOCATE(' ', 'The hot sun') |+----------------------------+| 4 |+------------------------+String Kosong
Inilah yang terjadi ketika substring adalah string kosong:
SELECT LOCATE('', 'The hot sun');
Hasil:
+---------------------------+| LOCATE('', 'The hot sun') |+-----------------+| 1 |+-----------------------+Tidak Cocok
Jika substring tidak ditemukan dalam string,
LOCATE()
mengembalikan0
:SELECT LOCATE('cold', 'The hot sun');
Hasil:
+-------------------------------+| LOCATE('dingin', 'Matahari yang panas') |+-------------------------------+| 0 |+-------------------------------+Argumen Null
Memberikan
null
untuk salah satu argumen menghasilkannull
:SELECT LOCATE(null, 'The hot sun'), LOCATE('hot', null);
Hasil:
+-----------------------------+---------------- -----+| LOCATE(null, 'Matahari yang panas') | LOCATE('hot', null) |+-----------------------------+---------- -----------+| NULL | NULL |+----------------------------+----------------- ----+Menyediakan Jumlah Argumen yang Salah
Memanggil
LOCATE()
dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun menghasilkan kesalahan:SELECT LOCATE('hot');
Hasil:
ERROR 1582 (42000):Jumlah parameter salah dalam panggilan ke fungsi asli 'LOCATE'