Saya punya permintaan MySQL ini.
Saya memiliki bidang basis data dengan konten ini
sports,shopping,pool,pc,games
shopping,pool,pc,games
sports,pub,swimming, pool, pc, games
Mengapa kueri seperti ini tidak berfungsi? Saya membutuhkan bidang dengan olahraga atau pub atau keduanya?
SELECT * FROM table WHERE interests LIKE ('%sports%', '%pub%')
Cara lebih cepat untuk melakukan ini:
Apakah ini:
Temukan solusi ini di sini: http://forums.mysql.com/read.php?10,392332,392950#msg-392950
Lebih lanjut tentang REGEXP di sini: http://www.tutorialspoint.com/mysql/mysql-regexps.htm
sumber
(select group_concat(myColumn separator '|') from..)
Mengapa Anda tidak mencoba REGEXP. Coba seperti ini:
sumber
SELECT * FROM table WHERE interests NOT REGEXP 'sports|pub'
(> ‿◠) ✌jazkat
jawaban yang diajukan 5 tahun sebelum jawaban Anda?Anda juga bisa menggunakannya
RLIKE
.Sebagai contoh:
sumber
Kueri Anda seharusnya
SELECT * FROM `table` WHERE find_in_set(interests, "sports,pub")>0
Yang saya mengerti adalah bahwa Anda menyimpan minat dalam satu bidang di meja Anda, yang merupakan kesalahpahaman. Anda harus memiliki tabel "minat".
sumber
SELECT * FROM table WHERE find_in_set(interests, 'sports,pub')
, tetapi teknik ini cenderung mengungguli regex dalam kebanyakan situasi.Jangan lupa untuk menggunakan tanda kurung jika Anda menggunakan fungsi ini setelah
AND
parameterSeperti ini:
sumber
Atau jika Anda hanya perlu mencocokkan awal kata-kata:
Anda dapat menggunakan kecocokan regexp caret:
https://www.regular-expressions.info/anchors.html
sumber
Seperti yang diusulkan oleh @Alexis Dufrenoy, kueri dapat berupa:
Informasi lebih lanjut dalam manual .
sumber
Lebih banyak contoh pekerjaan:
Tugas adalah menghitung peserta pada suatu acara dengan filter jika ekstensi email sama dengan beberapa domain perusahaan.
sumber