Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana Fungsi LOCATE() Bekerja di MySQL

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 |
+------+------+------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbaiki Akses ditolak untuk pengguna 'root'@'localhost' untuk phpMyAdmin

  2. Memeriksa beberapa kolom untuk satu nilai

  3. Memahami Gelombang Panas Baru MySQL

  4. Penskalaan Otomatis dengan Amazon Aurora Tanpa Server

  5. Sintaks SQL DROP DATABASE – Didaftarkan oleh DBMS