प्रश्न में बहुत अधिक जानकारी प्रदान नहीं की गई है। हम केवल इतना जानते हैं:
- कॉलम
Thai_CI_AS
के संयोजन का उपयोग कर रहा है (कम से कम ऐसा लगता है कि सवाल बता रहा है) - थाई वर्ण पारित किए जा रहे हैं
- कॉलम में जो स्टोर किया जाता है वह है:
???
हालाँकि, केवल उसी से हम दो बातें निकाल सकते हैं:
-
आने वाली स्ट्रिंग न तो
NVARCHAR
है पैरामीटर / चर, न ही यह एक स्ट्रिंग अक्षर है जो एक अपर-केस "N" के साथ उपसर्ग करता है,और
-
डीबी के लिए डिफ़ॉल्ट संयोजन जिसमें क्वेरी निष्पादित की जा रही है (जरूरी नहीं कि डीबी जिसमें तालिका मौजूद हो) नहीं है एक थाई संयोजन।
हमें नहीं पता कि गंतव्य कॉलम VARCHAR
है या नहीं या NVARCHAR
, लेकिन इससे कोई फर्क नहीं पड़ता कि कॉलम का कोलाज थाई कोलेशन है (क्योंकि यह VARCHAR
को अनुमति देगा। थाई वर्ण रखने के लिए डेटा, और NVARCHAR
परवाह किए बिना काम करेगा)।
अगर या तो :
-
आने वाली स्ट्रिंग
NVARCHAR
. का उपयोग करती है पैरामीटर (या यदि स्ट्रिंग शाब्दिक है, तो एक अपर-केस "N" के साथ उपसर्ग करें),या
-
क्वेरी को डीबी में निष्पादित किया गया था जिसमें थाई डिफ़ॉल्ट कोलेशन है
तब थाई वर्ण अपेक्षित रूप से संग्रहीत हो जाएंगे।
निम्न उदाहरण इस व्यवहार को प्रदर्शित करता है। मैं एक थाई कैरेक्टर Khomut U+0E5B
का उपयोग करता हूं एक उदाहरण पर Korean_100_CS_AS_KS_WS_SC
इंस्टेंस-लेवल डिफ़ॉल्ट Collation. गंतव्य कॉलम में Thai_CI_AS
. का एक संयोजन है . पहला, जबकि "वर्तमान" DB वह है जो नहीं . करता है एक थाई डिफ़ॉल्ट Collation है, मैं चरित्र को दो बार जोड़ता हूं:एक बार "N" के साथ उपसर्ग और एक बार स्ट्रिंग शाब्दिक पर कोई उपसर्ग नहीं:
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'๛');
इसके बाद, मैं एक ऐसे डीबी पर स्विच करता हूं जो करता है एक थाई डिफ़ॉल्ट Collation है और केवल गैर-प्रीफिक्स्ड स्ट्रिंग डालें ("एन" -प्रीफिक्स्ड स्ट्रिंग को फिर से परीक्षण करने की कोई वास्तविक आवश्यकता नहीं है):
USE [other_db];
-- In a DB with a Thai default Collation:
INSERT INTO #Thai (Col1) VALUES ('๛');
SELECT * FROM #Thai;
नतीजा यह है:
ID Col1
1 ?
2 ๛
3 ๛
जैसा कि आप देख सकते हैं (उपरोक्त परिणामों में बिंदु # नीचे आईडी # से संबंधित है):
- गैर-"N"-प्रीफिक्स्ड स्ट्रिंग, जिसका उपयोग DB में गैर-थाई डिफ़ॉल्ट Collation का उपयोग करके किया जाता है, का अनुवाद
?
में किया गया है - एक गैर-थाई डिफ़ॉल्ट Collation का उपयोग करके DB में "N" -prefixed string का भी उपयोग किया जाता है, मान को सही ढंग से संग्रहीत किया जाता है
- गैर-"N"-प्रीफिक्स्ड स्ट्रिंग, जिसका उपयोग DB में किया जाता है, जिसमें थाई डिफ़ॉल्ट Collation होता है, मान को सही ढंग से संग्रहीत करता है