2014-01-15 3 views
-3

Я есть выбор что-то вроде запросаSQL сверка запрос Проблема

SELECT 
    itemCode, 
    itemDefinition, 
    clientCode, 
    clientDefinition 
FROM 
    Invoices 

таблицы счетов в базе данных имеет параметры сортировки SQL_Latin1_General_CP1_CI_AS.

Проблема в том, что я получаю данные в своей программе, турецкие символы в столбце itemDefinition и clientDefinition не отображаются должным образом. Например, турецкое письмо Ğ становится другим персонажем, Ş что-то еще и т. Д.

Может ли кто-нибудь помочь мне решить эту проблему?

Благодаря

enter image description here

+0

Что такое 'DataTypes', который вы использовали для' Table', можете ли вы предоставить схему таблиц ..? –

+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) 

ОТ I nvoices

Смежные вопросы