Във въпроса не е предоставена много информация. Всичко, което знаем е:
- Колоната използва съпоставяне на
Thai_CI_AS
(поне това звучи така, както гласи въпросът) - Предават се тайландски знаци
- Това, което се съхранява в колоната е:
???
Само от това обаче можем да заключим две неща:
-
Входящият низ не е нито
NVARCHAR
параметър / променлива, нито е низов литерал, който има префикс с главна буква "N",и
-
Подреждането по подразбиране за DB, в която се изпълнява заявката (не непременно DB, в която съществува таблицата), е не тайландска колекция.
Не знаем дали колоната местоназначение е VARCHAR
или NVARCHAR
, но това няма значение дали съпоставянето на колоната е тайландско съпоставяне (тъй като това ще позволи VARCHAR
данни за съхранение на тайландски знаци и NVARCHAR
ще работи независимо).
Ако или :
-
входящият низ използва
NVARCHAR
параметър (или ако низов литерал, тогава префикс с главна буква "N"),или
-
заявката е изпълнена в DB, която има подразбиране за Thai Collation
тогава тайландските знаци ще бъдат съхранени според очакванията.
Следващият пример демонстрира това поведение. Използвам тайландски символ Khomut U+0E5B
на екземпляр с Korean_100_CS_AS_KS_WS_SC
Съпоставяне по подразбиране на ниво екземпляр. Колоната за местоназначение има съвпадение на Thai_CI_AS
. Първо, докато "текущата" DB е тази, която не има тайландска подредба по подразбиране, добавям знака два пъти:веднъж с префикс „N“ и веднъж без префикс в литерала на низа:
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'๛');
След това преминавам към база данни, която прави имат тайландска подредба по подразбиране и вмъкват само низа без префикс (няма реална нужда да тествате отново низа с префикс "N"):
USE [other_db];
-- In a DB with a Thai default Collation:
INSERT INTO #Thai (Col1) VALUES ('๛');
SELECT * FROM #Thai;
Резултатът е:
ID Col1
1 ?
2 ๛
3 ๛
Както можете да видите (точка # по-долу се отнася до ID # в резултатите по-горе):
- Низът с префикс без "N", използван в DB, използващ не-тайландско съпоставяне по подразбиране, е преведен в
?
- Низът с префикс "N", използван също и в DB, използващ не-тайландско съпоставяне по подразбиране, съхрани стойността правилно
- Низът с префикс без "N", използван в DB, който има подразбираща се тайландска подредба, съхрани стойността правилно