MSSQL üzerinde Türkçe Soundex Fonksiyonu Hazırlanması ve Kullanımı

MS SQLBir ç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.