Der er ikke mange oplysninger i spørgsmålet. Det eneste vi ved er:
- Kolonne bruger sortering af
Thai_CI_AS
(i det mindste at det var, det lyder som om spørgsmålet siger) - Thaiske tegn sendes ind
- Det, der er gemt i kolonnen, er:
???
Men ud fra det alene kan vi udlede to ting:
-
Den indgående streng er hverken en
NVARCHAR
parameter / variabel, og det er heller ikke en streng-literal, der er præfikset med et stort "N",og
-
Standardsorteringen for den DB, hvori forespørgslen udføres (ikke nødvendigvis den DB, hvori tabellen findes) er ikke en thailandsk samling.
Vi ved ikke, om destinationskolonnen er VARCHAR
eller NVARCHAR
, men det betyder ikke noget, hvis kolonnens samling er en thailandsk samling (da det vil tillade VARCHAR
data til at indeholde thailandske tegn og NVARCHAR
ville virke uanset).
Hvis enten :
-
den indkommende streng bruger en
NVARCHAR
parameter (eller hvis streng er bogstavelig, så præfiks med et stort "N"),eller
-
forespørgslen blev udført i en DB, der har en thailandsk standardsortering
så ville de thailandske tegn blive gemt som forventet.
Følgende eksempel viser denne adfærd. Jeg bruger en Thai Character Khomut U+0E5B
på en forekomst med en Korean_100_CS_AS_KS_WS_SC
Standardindsamling på instansniveau. Destinationskolonnen har en sortering af Thai_CI_AS
. For det første, mens den "aktuelle" DB er en, der ikke gør har en thailandsk standardsortering, tilføjer jeg tegnet to gange:én gang præfikset med "N" og én gang uden præfiks på strengen 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'๛');
Dernæst skifter jeg til en DB, der gør har en thailandsk standardsortering, og indsæt kun den ikke-præfiksede streng (intet reelt behov for at teste "N"-præfikset strengen igen):
USE [other_db];
-- In a DB with a Thai default Collation:
INSERT INTO #Thai (Col1) VALUES ('๛');
SELECT * FROM #Thai;
Resultatet er:
ID Col1
1 ?
2 ๛
3 ๛
Som du kan se (punkt # nedenfor vedrører ID # i resultaterne ovenfor):
- Den streng, der ikke er "N"-præfiks, brugt i en DB ved hjælp af en ikke-thailandsk standardsortering, blev oversat til
?
- Strengen med "N"-præfikset, der også bruges i en DB, der bruger en ikke-thailandsk standardsortering, lagrede værdien korrekt
- Strengen uden "N"-præfiks, der bruges i en DB, der har en thailandsk standardsortering, lagrede værdien korrekt