Tidak banyak informasi yang diberikan dalam pertanyaan. Yang kita tahu hanyalah:
- Kolom menggunakan Pengumpulan
Thai_CI_AS
(setidaknya itu terdengar seperti pertanyaan yang dinyatakan) - Karakter Thailand dikirimkan
- Yang disimpan di kolom adalah:
???
Namun, dari itu saja kita dapat menyimpulkan dua hal:
-
String yang masuk bukan
NVARCHAR
parameter / variabel, juga bukan literal string yang diawali dengan huruf besar "N",dan
-
Pengumpulan default untuk DB tempat kueri dieksekusi (tidak harus DB tempat Tabel ada) tidak Koleksi Thailand.
Kami tidak tahu apakah kolom tujuan adalah VARCHAR
atau NVARCHAR
, tapi itu tidak masalah jika Collation kolom adalah Thai Collation (karena itu akan memungkinkan VARCHAR
data untuk menampung karakter Thailand, dan NVARCHAR
akan bekerja terlepas dari itu).
Jika salah satu :
-
string yang masuk menggunakan
NVARCHAR
parameter (atau jika string literal, maka awalan dengan huruf besar "N"),atau
-
kueri dieksekusi dalam DB yang memiliki Collation default Thailand
maka karakter Thailand akan disimpan seperti yang diharapkan.
Contoh berikut menunjukkan perilaku ini. Saya menggunakan Karakter Thai Khomut U+0E5B
pada instance yang memiliki Korean_100_CS_AS_KS_WS_SC
Pengumpulan default tingkat instans. Kolom tujuan memiliki Collation Thai_CI_AS
. Pertama, sementara DB "saat ini" adalah yang tidak memiliki Collation default Thailand, saya menambahkan karakter dua kali:sekali diawali dengan "N" dan sekali tanpa awalan pada string 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'๛');
Selanjutnya, saya beralih ke DB yang melakukannya memiliki Collation default Thailand dan hanya memasukkan string yang tidak diawali (tidak perlu menguji ulang string dengan awalan "N"):
USE [other_db];
-- In a DB with a Thai default Collation:
INSERT INTO #Thai (Col1) VALUES ('๛');
SELECT * FROM #Thai;
Hasilnya adalah:
ID Col1
1 ?
2 ๛
3 ๛
Seperti yang Anda lihat (poin # di bawah ini terkait dengan ID # dalam hasil di atas):
- String yang tidak diawali dengan "N", digunakan dalam DB menggunakan Collation default non-Thailand, diterjemahkan ke dalam
?
- String dengan awalan "N", juga digunakan dalam DB menggunakan Collation default non-Thailand, menyimpan nilainya dengan benar
- String yang tidak diawali dengan "N", digunakan dalam DB yang memiliki Collation default Thailand, menyimpan nilainya dengan benar