2014-01-15 123 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