2014-01-15 58 views
-3

我有一個選擇查詢類似SQL查詢覈對麻煩

SELECT 
    itemCode, 
    itemDefinition, 
    clientCode, 
    clientDefinition 
FROM 
    Invoices 

發票數據庫表中有整理SQL_Latin1_General_CP1_CI_AS

問題是當我在我的程序中收到數據時,itemDefinitionclientDefinition列中的土耳其字符看起來不正確。例如土耳其語字母Ğ變成其他字符,something其他字符等。

有人可以幫我解決這個問題嗎?

感謝

enter image description here

+0

什麼是用於'表'的'DataTypes',你能提供你的表格嗎? –

+0

varchar(100)...對於列itemDefinition和clientDefinition –

+1

使用nvarchar(100),它會工作.. –

回答

-1

的解決辦法是這樣的:首先,需要創建角色皈依功能如下:然後

CREATE FUNCTION [dbo].[ChangetoTRK](@A NVARCHAR(4000))  
RETURNS NVARCHAR(4000)  
AS  
BEGIN 
    DECLARE @TMP NVARCHAR(4000)  
    SET @TMP = REPLACE(@A COLLATE LATIN1_GENERAL_BIN, CHAR(208), N'Ğ') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(220), N'Ü') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(222), N'Ş') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(221), N'İ') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(214), N'Ö') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(199), N'Ç') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(73), N'I') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(240), N'ğ') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(252), N'ü') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(254), N'ş') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(105), N'i') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(246), N'ö') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(231), N'ç') 
    SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(253), N'ı') 
    RETURN @TMP 
END 

,我們用它查詢爲:

SELECT 
    itemCode, 
    dbo.ChangeToTRK(itemDefinition), 
    clientCode, 
    dbo.ChangeToTRK(clientDefinition) 

FROM I nvoices