"Enter"a basıp içeriğe geçin

Etiket: kelimeleri ayrıştırma

Mysql için count_str() “kelimedeki karakterin adedi” fonksiyonu

Bir önceki yazıda MySQL için split_str() fonksiyonunu oluşturmuştuk. Kelimeleri verdiğimiz karaktere göre bölüyordu. Amacımız; ad ve soyad değerleri tek bir sütunda isim olarak verildiğinde bu isim bilgisinden ad ve soyadı ayrıştırabilmek idi. split_str() fonksiyonu datayı istediğimiz karaktere göre (örneğin boşluk karakteri) bölebiliyor ve ortaya çıkan gruplardan hangisini görmek istiyorsak onu almamızı sağlıyor. Ama problemimiz için bu yeterli değil. Çünkü isimler her zaman “Fehim Tabak” gibi bir ad ve bir soyaddan oluşmuyor. İki ad ve bir soyad, hatta kulakları çınlasın sevgili arkadaşım “Yusuf Ziya Bektaş Köseoğlu” gibi üç ad ve bir soyad da olabiliyor. Böyle bir bilgiden soyadı ve adı ayrıştırabilmek için “en son kelime soyaddır” ve “en son kelime hariç diğerleri addır” diyebilmek gerek. Aşağıda yazacağımız count_str() fonksiyonu işte bu noktada devreye giriyor.

CREATE FUNCTION COUNT_STR(
x VARCHAR(255),
delim VARCHAR(12)
)
RETURNS INT
RETURN LENGTH(x)-LENGTH(REPLACE(x,delim,”));

Bu fonksiyon parametre olarak verdiğimiz karakterin yine parametre olarak verdiğimiz kelimenin içerisinde kaç kere geçtiğini döndürüyor. Boşluk ‘ ‘ karakteri ilgili alanda kaç kere var diye kullanırsak ‘Fehim Tabak’ için 1, ‘Yusuf Ziya Bektaş Köseoğlu’ için 3 döndürür. Bu sayının bir fazlası bize o alanda kaç kelimelik bir bilgi olduğunu yani ismin kaç kelimeden oluştuğunu döndürür.