Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर चार और nchar कॉलम अलग-अलग खोज करते हैं

LIKE (Transact-SQL) के दस्तावेज़ीकरण से :

मैंने आपकी समस्या को निम्न तालिका के साथ पुन:प्रस्तुत किया:

DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';

परिणाम:

(0 row(s) affected)

हालाँकि यदि आप NVARCHAR . का उपयोग करते हैं इसके बजाय, यह समस्या नहीं होती है:

DECLARE @t TABLE(x NVARCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE x LIKE N'%S';

परिणाम:

x
-----
nanaS

हालांकि मूल तालिका NVARCHAR . में परिवर्तित होने पर भी वांछित परिणाम नहीं देती है WHERE . में खंड:

DECLARE @t TABLE(x NCHAR(25));
INSERT @t SELECT N'nanaS';
SELECT x FROM @t WHERE CONVERT(NVARCHAR(25),x) LIKE N'%S';

परिणाम:

(0 row(s) affected)

तो एक संभावित समाधान यह होगा कि पहली बार में सही डेटा प्रकार का उपयोग किया जाए (और हमेशा यूनिकोड स्ट्रिंग्स N'properly' का भी उपसर्ग किया जाए। . यदि आप डेटा प्रकार को सही नहीं बना सकते हैं, तो आप RTRIM() . का उपयोग कर सकते हैं औशिन द्वारा पोस्ट किया गया वर्कअराउंड, लेकिन एचएलजीईएम की टिप्पणियों को भी ध्यान में रखें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल:डुप्लिकेट निकालें

  2. एक विशिष्ट तालिका में सम्मिलित करने वाली संग्रहीत प्रक्रिया खोजें

  3. SQL सर्वर सर्वर में नियमित अभिव्यक्तियाँ?

  4. क्रिस्टल रिपोर्ट डेटासोर्स रीमैप

  5. चेतावनी प्राप्त करना:कुल या अन्य सेट ऑपरेशन द्वारा शून्य मान समाप्त हो गया है