Không có nhiều thông tin được cung cấp trong câu hỏi. Tất cả những gì chúng tôi biết là:
- Cột đang sử dụng Đối chiếu của
Thai_CI_AS
(ít nhất là có vẻ như câu hỏi đang nói rõ) - Các ký tự tiếng Thái đang được chuyển sang
- Những gì được lưu trữ trong cột là:
???
Tuy nhiên, chỉ từ đó chúng ta có thể suy ra hai điều:
-
Chuỗi đến không phải là
NVARCHAR
tham số / biến, cũng không phải là một ký tự chuỗi được đặt trước bằng chữ hoa "N",và
-
Đối chiếu mặc định cho DB trong đó truy vấn đang được thực thi (không nhất thiết là DB trong đó Bảng tồn tại) là không một đối chiếu tiếng Thái.
Chúng tôi không biết cột đích có phải là VARCHAR
hay không hoặc NVARCHAR
, nhưng điều đó không quan trọng nếu đối chiếu của cột là đối chiếu tiếng Thái (vì điều đó sẽ cho phép VARCHAR
dữ liệu để lưu giữ các ký tự tiếng Thái và NVARCHAR
sẽ hoạt động bất kể).
Nếu một trong hai :
-
chuỗi đến sử dụng
NVARCHAR
tham số (hoặc nếu chuỗi là chữ, thì tiền tố bằng chữ hoa "N"),hoặc
-
truy vấn được thực thi trong một DB có Đối chiếu mặc định của Thái
thì các ký tự tiếng Thái sẽ được lưu trữ như mong đợi.
Ví dụ sau đây thể hiện hành vi này. Tôi sử dụng Ký tự Thái Khomut U + 0E5B
trên một trường hợp có Korean_100_CS_AS_KS_WS_SC
Đối chiếu mặc định cấp phiên bản. Cột đích có Đối chiếu của Thai_CI_AS
. Đầu tiên, mặc dù DB "hiện tại" là một DB không có một Collation mặc định của Thái Lan, tôi thêm ký tự hai lần:một lần có tiền tố là "N" và một lần không có tiền tố trên chuỗi chữ:
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'๛');
Tiếp theo, tôi chuyển sang DB hiện có Đối chiếu mặc định của Thái Lan và chỉ chèn chuỗi không có tiền tố (thực tế không cần kiểm tra lại chuỗi có tiền tố "N"):
USE [other_db];
-- In a DB with a Thai default Collation:
INSERT INTO #Thai (Col1) VALUES ('๛');
SELECT * FROM #Thai;
Kết quả là:
ID Col1
1 ?
2 ๛
3 ๛
Như bạn thấy (điểm # bên dưới liên quan đến ID # trong kết quả ở trên):
- Chuỗi có tiền tố không phải "N", được sử dụng trong DB bằng đối chiếu mặc định không phải tiếng Thái, đã được dịch sang
?
- Chuỗi có tiền tố "N", cũng được sử dụng trong DB bằng Cách sử dụng đối chiếu mặc định không phải tiếng Thái, đã lưu trữ giá trị một cách chính xác
- Chuỗi có tiền tố không phải "N", được sử dụng trong DB có Đối chiếu mặc định của Thái Lan, đã lưu trữ giá trị một cách chính xác