MSSQL üzerinde Türkçe Soundex Fonksiyonu Hazırlanması ve Kullanımı
Bir çok yazılımda, sitede görmüşüzdür. Biz ne kadar hatalı yazmış olsak da ilgili yazılım bizim hatamızı bulup doğrularcasına “Bunu mu demek istemiştiniz?” diye sorar ve altına da kocaman puntolarla doğrusunu yazar. Peki ama bu nasıl yapılıyor.
Bu işlem sql fonksiyonlarından SOUNDEX ile yapılıyor ancak bu fonksiyon bildiğiniz gibi İNGİLİZCE harflere göre tasarlanmış. Ama ya TÜRKÇE arama yaparsak 🙂
Bunun için örnek bir SQL fonksiyonu yazdım işte kodlar…
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Burak ŞEKERCİOĞLU -- Create date: 13.01.2013 -- Description: Türkçe Soundex Fonksiyonu -- ============================================= CREATE FUNCTION fn_soundxTR ( @txt as nvarchar(max) ) RETURNS nvarchar(4) AS begin declare @islem nvarchar(max) set @txt=upper(@txt) set @txt=replace(@txt,'Ş','S') set @txt=replace(@txt,'Ğ','G') set @txt=replace(@txt,'İ','I') set @txt=replace(@txt,'Ü','U') set @txt=replace(@txt,'Ö','O') set @txt=replace(@txt,'Ç','C') set @islem=soundex(@txt) return @islem end
bu fonksiyonu sisteminizde test etmek isterseniz
select * from rehber where dbo.fn_soundxTR(soyad)=dbo.fn_soundxTR('ŞkerCiĞlu')
gibi bir örnek sorguyu rahatça kullanabilirsiniz.