Er is niet veel informatie in de vraag. Alles wat we weten is:
- Kolom gebruikt sortering van
Thai_CI_AS
(tenminste dat het zo was, klinkt alsof de vraag aangeeft) - Thaise tekens worden doorgegeven
- Wat wordt opgeslagen in de kolom is:
???
Hieruit alleen kunnen we echter twee dingen afleiden:
-
De binnenkomende string is geen
NVARCHAR
parameter / variabele, noch is het een letterlijke tekenreeks die wordt voorafgegaan door een hoofdletter "N",en
-
De standaard sortering voor de DB waarin de query wordt uitgevoerd (niet noodzakelijk de DB waarin de tabel bestaat) is niet een Thaise verzameling.
We weten niet of de bestemmingskolom VARCHAR
is of NVARCHAR
, maar dat maakt niet uit of de sortering van de kolom een Thaise sortering is (aangezien dat VARCHAR
zal toestaan gegevens voor Thaise karakters, en NVARCHAR
zou hoe dan ook werken).
Als ofwel :
-
de inkomende string gebruikt een
NVARCHAR
parameter (of indien letterlijke tekenreeks, dan prefix met een hoofdletter "N"),of
-
de query is uitgevoerd in een database met een Thaise standaardsortering
dan zouden de Thaise karakters worden opgeslagen zoals verwacht.
Het volgende voorbeeld laat dit gedrag zien. Ik gebruik een Thai Character Khomut U+0E5B
op een instantie met een Korean_100_CS_AS_KS_WS_SC
Standaard sortering op exemplaarniveau. De bestemmingskolom heeft een sortering van Thai_CI_AS
. Ten eerste, terwijl de "huidige" DB er een is die niet een Thaise standaardsortering hebben, voeg ik het teken twee keer toe:een keer voorafgegaan door "N" en een keer zonder voorvoegsel op de letterlijke tekenreeks:
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'๛');
Vervolgens schakel ik over naar een DB die doet een Thaise standaardsortering hebben en alleen de string zonder prefix invoegen (het is niet echt nodig om de string met de prefix "N" opnieuw te testen):
USE [other_db];
-- In a DB with a Thai default Collation:
INSERT INTO #Thai (Col1) VALUES ('๛');
SELECT * FROM #Thai;
Het resultaat is:
ID Col1
1 ?
2 ๛
3 ๛
Zoals je kunt zien (punt # hieronder heeft betrekking op ID # in bovenstaande resultaten):
- De niet-"N"-prefix, gebruikt in een DB met een niet-Thaise standaardsortering, is vertaald in
?
- De tekenreeks met "N"-prefix, ook gebruikt in een database met een niet-Thaise standaardsortering, heeft de waarde correct opgeslagen
- De niet-"N"-prefix, gebruikt in een DB die wel een Thaise standaardsortering heeft, heeft de waarde correct opgeslagen