V dotazu není uvedeno mnoho informací. Vše, co víme, je:
- Sloupec používá řazení
Thai_CI_AS
(alespoň, že to tak bylo, to zní tak, jak to říká otázka) - Thajské znaky jsou předávány
- Ve sloupci je uloženo:
???
Již z toho však můžeme vyvodit dvě věci:
-
Příchozí řetězec není ani
NVARCHAR
parametr / proměnná, ani to není řetězcový literál s předponou s velkým "N",a
-
Výchozí řazení pro databázi, ve které je dotaz prováděn (ne nutně DB, ve které tabulka existuje), není thajské řazení.
Nevíme, zda je cílový sloupec VARCHAR
nebo NVARCHAR
, ale to nezáleží na tom, zda je řazení ve sloupci thajské řazení (protože to umožní VARCHAR
data pro uložení thajských znaků a NVARCHAR
bude fungovat bez ohledu na to).
Pokud buď :
-
příchozí řetězec používá
NVARCHAR
parametr (nebo pokud je řetězcový literál, pak předpona s velkým "N"),nebo
-
dotaz byl proveden v databázi, která má výchozí thajské řazení
pak by se thajské znaky uložily podle očekávání.
Následující příklad ukazuje toto chování. Používám Thajský znak Khomut U+0E5B
v instanci s Korean_100_CS_AS_KS_WS_SC
Výchozí řazení na úrovni instance. Cílový sloupec má řazení Thai_CI_AS
. Za prvé, zatímco „aktuální“ DB je taková, která není mají výchozí thajské řazení, přidávám znak dvakrát:jednou s předponou "N" a jednou bez předpony v řetězcovém literálu:
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'๛');
Dále přepnu na DB, která dělá mít výchozí thajské řazení a vložit pouze řetězec bez předpony (není potřeba znovu testovat řetězec s předponou "N"):
USE [other_db];
-- In a DB with a Thai default Collation:
INSERT INTO #Thai (Col1) VALUES ('๛');
SELECT * FROM #Thai;
Výsledek je:
ID Col1
1 ?
2 ๛
3 ๛
Jak můžete vidět (bod # níže se vztahuje k ID # ve výsledcích výše):
- Řetězec s předponou "N" použitý v databázi používající jiné než thajské výchozí řazení byl přeložen do
?
- Řetězec s předponou "N", používaný také v databázi používající jiné než thajské výchozí řazení, uložil hodnotu správně
- Řetězec s předponou "N" použitý v databázi, která má thajské výchozí řazení, uložil hodnotu správně