You are currently viewing MySQL ile find_in_set kontrol

MySQL ile find_in_set kontrol

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. Bu fonksiyon Php’den ve javascript’te çok sıkça kullanmakta olduğumuzu ( inArray &  in_array ) benzemektedir. MySQL üzerinde nasıl kullanabiliriz kısa bir şekilde örnekleyecek olursak;

SELECT FIND_IN_SET(‘b’,’a,b,c’)

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 yeni sorgumuzun son hali ise

SELECT * FROM table WHERE FIND_IN_SET (‘aranan’ , REPLACE(data,’|’,’,’)) > 0

olacaktır. Sizde yukarıdaki sorguyu kendinize göre derleyerek kullanabilirsiniz.

Konuyu Özetleyerek Toparlayalım

MySQL veritabanında, FIND_IN_SET fonksiyonu, bir dizi içinde verilen değerin indeksini döndürür. Bu fonksiyon, verilen değerin dizide bulunup bulunmadığını kontrol etmek için kullanılır. FIND_IN_SET fonksiyonu, aşağıdaki gibi kullanılır:

SELECT * FROM tablo_adi WHERE FIND_IN_SET(deger, dizi_alan);

Bu sorgu, tablo_adi tablosundaki dizi_alan alanı içinde deger değerini arar ve bulursa, bu kaydın diğer alanlarını da döndürür. FIND_IN_SET fonksiyonu, dizi alanlarında kullanılır ve dizi alanları, virgülle ayrılmış değerlerden oluşan metin alanlarıdır.

Örneğin, aşağıdaki veritabanı tablosu bir öğrenci tablosu olabilir ve öğrenci_id, öğrenci_adi ve dersler alanları vardır:

öğrenci_id | öğrenci_adi  | dersler
--------------------------------------
1           | Ahmet         | Matematik, Fizik, Kimya
2           | Mehmet        | Matematik, Tarih, Coğrafya
3           | Ali           | Fizik, Kimya, Coğrafya
4           | Ayşe          | Matematik, Tarih

Şimdi, dersler alanı içinde “Matematik” değerini aramak istediğimizi varsayalım. Bu durumda, aşağıdaki sorguyu kullanabiliriz:

SELECT * FROM öğrenciler WHERE FIND_IN_SET('Matematik', dersler);

Bu sorgu, “Matematik” değerini içeren kayıtları döndürecektir:

öğrenci_id | öğrenci_adi  | dersler
--------------------------------------
1           | Ahmet         | Matematik, Fizik, Kimya
2           | Mehmet        | Matematik, Tarih, Coğrafya
4           | Ayşe          | Matematik, Tarih

Herhangi bir sorunuz olması halinde yorum olarak yazabilirsiniz.

kurtitasarim

‘’İrade ve yargıları aşan güçlü bir coşku, ihtiras" diye tanımlanır tutku. Yaptığın işi sevmek yerine, sevdiğin işi yap mottosu da benim tutku tanımım. Kod yazmak bir yana, o kodun sistem üzerindeki hareketlerini, farklı cihazlar ile etkileşimini, o noktalarda oluşan sıkıntıları görmek, çözmek ve bunu yaparken diğer kişilere yol göstermek işimin en zevkli yanı. Bu sebeple önce tutku ile yapılan iş, sonra maddiyat..

Bir yanıt yazın