Mesajlar Etiketlendi ‘Ð’

SQL de Türkçe Karakter Sorunu

Yayınlandı: Ağustos 8, 2011 / Software
Etiketler:, , , , , ,

SQL de yazdığınız query sonucunda karakter setinden kaynaklanan,anlamsız harfler görebilirsiniz.İnternette
yapacağınız araştırma sonucunda çeşitli fonksiyonlar bulabilirsiniz fakat bazıları işinizi görmeyebilir.
Ben bunu aradan sızma yapmaması için şöyle kullandım;

CREATE FUNCTION [dbo].[fn_Turkcelestir](@A NVARCHAR(max))
RETURNS NVARCHAR(max)
AS
BEGIN
DECLARE @TMP NVARCHAR(max)
–SET @TMP = REPLACE(@A , N’Ð’,N’Ð’)
SET @TMP = REPLACE(@A COLLATE LATIN1_GENERAL_BIN,CHAR(208),N’Ð’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,CHAR(240),N’ð’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,CHAR(222),N’Þ’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,CHAR(253),N’ý’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,CHAR(221),N’Ý’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,CHAR(254),N’þ’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,N’Ý’, N’İ’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,N’ð’, N’ğ’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,N’Ð’, N’Ğ’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,N’ý’, N’ı’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,N’Ý’, N’İ’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,N’þ’, N’ş’)
SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN,N’Þ’, N’Ş’)
RETURN @TMP
END

Şimdi bu fonksiyonu nasıl kullanıcaz o kısma gelelim…
Hemen bulunduğunuz veritabanı üstünde New Query ile yeni bir sayfa açalım..
Bir @X değişkeni tanımlayalım yada bir Tablodaki( örneğin adres sahası) bir sahayı alalım
Ve şu şekilde kullanalım;

Declare @X nvarchar(50)
set @X=’BAÐLARBAÞI/ÝSTANBUL’
Select [dbo].[fn_Turkcelestir](@X)

SONUÇ : BAĞLARBAŞI/İSTANBUL

veya

Select [dbo].[fn_Turkcelestir](adres) From Musteriler

Hepsi Bu kadar….Sağlıcakla kalın…;)