Di MySQL, Anda dapat menggunakan FIND_IN_SET()
fungsi untuk mengembalikan indeks item daftar yang diberikan dalam daftar string (misalnya 'item1, item2, item3,…').
Fungsi membutuhkan dua argumen; string untuk ditemukan, dan daftar untuk dicari.
Sintaksnya seperti ini:
FIND_IN_SET(str,strlist)
Dimana str
adalah string yang Anda cari, dan strlist
adalah daftar string yang harus dicari.
Contoh
Ini contohnya:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse') AS 'Result';
Hasil:
+--------+ | Result | +--------+ | 2 | +--------+
Ini mengembalikan 2
karena itu posisi string Dog
dalam daftar string.
Perhatikan bahwa hanya indeks kejadian pertama yang dikembalikan. Jadi jika ada kejadian lain Dog
setelah yang pertama, kami masih mendapatkan hasil yang sama:
SELECT FIND_IN_SET('Dog', 'Cat,Dog,Horse,Dog') AS 'Result';
Hasil:
+--------+ | Result | +--------+ | 2 | +--------+
Tidak Ada Yang Cocok
Ketika string tidak ditemukan, hasil dari 0
dikembalikan:
SELECT FIND_IN_SET('Lizard', 'Cat,Dog,Horse') AS 'Result';
Hasil:
+--------+ | Result | +--------+ | 0 | +--------+
Bagaimana jika Argumen Pertama berisi Koma?
Fungsi tidak akan mengembalikan hasil positif jika argumen pertama berisi koma.
Ini contohnya:
SELECT FIND_IN_SET('Cat,Dog', 'Cat,Dog,Horse') AS 'Result';
Hasil:
+--------+ | Result | +--------+ | 0 | +--------+
Dalam contoh ini, orang mungkin mengharapkannya mengembalikan hasil positif (mengingat Cat,Dog
sebenarnya ada dalam daftar), namun, koma digunakan sebagai pemisah dalam daftar, dan oleh karena itu, pencocokan string tidak berfungsi.
Lihat juga Cara Mengembalikan Posisi Argumen dalam Daftar Argumen dengan menggunakan FIELD()
fungsi.