Não há muitas informações fornecidas na pergunta. Tudo o que sabemos é:
- A coluna está usando o agrupamento de
Thai_CI_AS
(pelo menos foi o que parece que a pergunta está afirmando) - Caracteres tailandeses estão sendo transmitidos
- O que é armazenado na coluna é:
???
No entanto, a partir disso, podemos deduzir duas coisas:
-
A string de entrada não é umNVARCHAR
parâmetro / variável, nem é um literal de string prefixado com um "N" maiúsculo,
e
-
O Collation padrão para o banco de dados no qual a consulta está sendo executada (não necessariamente o banco de dados no qual a tabela existe) é não um Collation tailandês.
Não sabemos se a coluna de destino é
VARCHAR
ou NVARCHAR
, mas isso não importa se o Collation da coluna for um Thai Collation (já que permitirá VARCHAR
data para conter caracteres tailandeses e NVARCHAR
funcionaria independentemente). Se ou :
-
a string de entrada usa umNVARCHAR
parâmetro (ou se for literal de string, então prefixe com um "N" maiúsculo),
ou
-
a consulta foi executada em um banco de dados que possui um Collation padrão tailandês
então os caracteres tailandeses seriam armazenados conforme o esperado.
O exemplo a seguir demonstra esse comportamento. Eu uso um caractere tailandês Khomut U+0E5B em uma instância com um
Korean_100_CS_AS_KS_WS_SC
Agrupamento padrão no nível da instância. A coluna de destino tem um agrupamento de Thai_CI_AS
. Primeiro, enquanto o banco de dados "atual" é aquele que não tenho um Collation padrão tailandês, adiciono o caractere duas vezes:uma vez prefixado com "N" e uma vez sem prefixo na string literal:USE [tempdb];
-- DROP TABLE #Thai;
CREATE TABLE #Thai (ID INT IDENTITY(1, 1), Col1 VARCHAR(50) COLLATE Thai_CI_AS);
-- In a DB with a non-Thai default Collation:
INSERT INTO #Thai (Col1) VALUES ('๛');
INSERT INTO #Thai (Col1) VALUES (N'๛');
Em seguida, mudo para um banco de dados que faz tenha um Collation padrão tailandês e insira apenas a string não prefixada (não há necessidade real de testar novamente a string prefixada com "N"):
USE [other_db];
-- In a DB with a Thai default Collation:
INSERT INTO #Thai (Col1) VALUES ('๛');
SELECT * FROM #Thai;
O resultado é:
ID Col1
1 ?
2 ๛
3 ๛
Como você pode ver (o ponto # abaixo está relacionado ao ID # nos resultados acima):
- A string não prefixada com "N", usada em um banco de dados usando um Collation padrão não tailandês, foi traduzida para
?
- A string com prefixo "N", também usada em um banco de dados usando um Collation padrão não tailandês, armazenou o valor corretamente
- A string não prefixada com "N", usada em um banco de dados que tem um Collation padrão tailandês, armazenou o valor corretamente