Merhabalar bugün sizlere Mysql ile find_in_set kontrol kullanarak içinde varmı aradığınız anahtarın varmı kontrolünü yapan fonksiyondan bahsetmek istiyorum. Php’de ve javascript’te çok sıkça kullanmakta olduğumuzu ( inArray & in_array ) benzeri bir yapıyı mysql üzerinde nasıl kullanabiliriz kısa bir şekilde örnekleyerek anlatmak istedim. Mysql’de bir tablonuz var ve bu tablonuzda değerleri pipe ” | ” veya size özgü bir ayraç ile tutuyor olabilirsiniz ve bu alanları sorgularken bu değer varmı yokmu kontrol ederek ona göre davranmasını isteyebilirsiniz bu durumda kulanmaknız gereken sorgu
[code]
SELECT FIND_IN_SET(‘b’,’a,b,c’)
[/code]
bu sorgunun çıktısı size 2 vericektir ve bunun anlamı belirttiğiniz değer 2 sırada demektir. Fakat siz bu ayırımları virgül “,” ile yapmadıysanız ve benim gibi pipe “|” işareti kulandıysanız yapmanız gereken ise burada bu sorguya birde replace komutunu eklemek olacaktır. Buradaki amacımız ise bizim belirttiğimiz ayıraç “delimiter” ile find_in_set kullanımında gereken “,” işaretine çevirme işlemini yaptık.
Mysql ile find_in_set kontrolünde yeni sorgumuzun alacağı hal ise
[code]
SELECT * FROM table WHERE FIND_IN_SET (‘aranan’ , REPLACE(data,’|’,’,’))>0
[/code]
olacaktır. Sizde yukarıdaki sorguyu kendinize göre derleyerek kullanabilirsiniz.