سؤال

I have a select query something like

SELECT
  itemCode,
  itemDefinition,
  clientCode,
  clientDefinition
FROM
  Invoices 

Invoice table in the database has the collation SQL_Latin1_General_CP1_CI_AS.

The problem is when I receive data in my program, Turkish characters in column itemDefinition and clientDefinition doesn't seem properly. For example Turkish letter Ğ becomes some other character, Ş something else etc.

Can someone help me to solve this problem?

Thanks

enter image description here

هل كانت مفيدة؟

المحلول

the solution is like this : firstly, need to create function for character convertion as in below :

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

then , we use it in query as :

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

FROM Invoices

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top