MsSql Server Select İçin Türkçe Karakter Çevirme

Entegrasyonunu yaptığımız bir projede karşımıza gelen Türkçe karakter problemi için çözüm arayışına girdiğimde aşağıdakine benzer bir yöntem buldum. Tabiki işe yaradı. Fakat uzun hali ile kısa hali oldukça farklı 🙂

SQL’den SELECT edilen verinin Türkçe karakterler ile geldiği için dosyalama tarafında bozulmalara yol açıyordu. Aşağıdaki Fonksiyon yardımı ile çözüme ulaştık. Fakat bu sırada çözüm arayışı için yardım aldığım yazılımcı bir arkadaş ( İsmail T. )işlemler bittikten sonra bir kod parçası daha gönderdi. Olsun ikiside işe yarıyor 🙂

CREATE FUNCTION tr_replace ( @str_tr NVARCHAR(100) ) RETURNS NVARCHAR(100)
AS
BEGIN
DECLARE @str_x NVARCHAR(100)
set @str_x = @str_tr
set @str_x = REPLACE(@str_x,'ı','i')
set @str_x = REPLACE(@str_x,'ş','s')
set @str_x = REPLACE(@str_x,'ç','c')
set @str_x = REPLACE(@str_x,'ö','o')
set @str_x = REPLACE(@str_x,'ğ','g')
set @str_x = REPLACE(@str_x,'ü','u')
return (@str_x)
END

Kullanım;

SELECT dbo.tr_replace('diplomasız mühendis')

SELECT username, dbo.tr_replace( fullname ), email FROM users;

Diğer yöntem ise aşağıdaki kaynakta yer alıyor. Bu Fonksiyonu kullanırken  “‘TRANSLATE’ is not a recognized built-in function name.” benzer bir hata alırsanız Fonksiyon tanımlı olmadığından yapıyor olabilir.

Kaynak 

Kullanım : SELECT TRANSLATE(string, ‘ĞÜŞİÖÇğüşıöç’, ‘GUSIOCgusioc’) FROM dual;

Fonksiyon tanımlamak için buradaki kaynağı kullanabilirsiniz veya farklı kaynakları tercih edebilirsiniz. Sql server versiyonunuza dikkat etmenizi öneririm