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

केस-असंवेदनशील प्राथमिक कुंजी प्रकार nvarchar जहां !=ss

आह, लेकिन यह है संभव है क्योंकि वहाँ है एक संयोजन जो इसे स्वाभाविक रूप से संभालता है (वास्तव में कई, लेकिन सभी एक ही "परिवार" में):Hungarian_Technical_* (ठीक है, केस सेंसिटिव (सीएस) और बाइनरी (बीआईएन / बीआईएन 2) विविधताएं घटाएं)। बेशक, मुझे अभी भी यकीन नहीं है कि यह PK के लिए एक अच्छा विकल्प है, लेकिन किसी कारण से यह UNIQUE INDEX नहीं हो सकता है ।

SELECT tmp.*,
       IIF(tmp.[First] = tmp.[Second] COLLATE Hungarian_Technical_CI_AI,
           N'Equal',
           N'NOT EQUAL') AS [Result]
FROM (
      SELECT N'weiß', N'Weiß', N'Equal'
      UNION ALL
      SELECT N'weiss', N'Weiss', N'Equal'
      UNION ALL
      SELECT N'weiß', N'weiss', N'NOT Equal'
      UNION ALL
      SELECT N'Weiß', N'Weiss', N'NOT Equal'
      UNION ALL
      SELECT N'weiß', N'Weiss', N'NOT Equal'
      ) tmp ([First], [Second], [Ideal]);

परिणाम:

First   Second  Ideal       Result
weiß    Weiß    Equal       Equal
weiss   Weiss   Equal       Equal
weiß    weiss   NOT Equal   NOT EQUAL
Weiß    Weiss   NOT Equal   NOT EQUAL
weiß    Weiss   NOT Equal   NOT EQUAL

इस तरह से काम करने वाले कुल 24 कोलाज हैं। आप उन्हें इसके माध्यम से ढूंढ सकते हैं:

SELECT hc.*
FROM sys.fn_HelpCollations() hc
WHERE hc.name LIKE N'Hungarian[_]Technical%'
AND hc.name LIKE N'%[_]CI%'
ORDER BY hc.name;

वे हैं:

यदि संस्करण 100 कॉलेशन उपलब्ध हैं (अर्थात्:आप SQL Server 2008 या नए का उपयोग कर रहे हैं), फिर उनका उपयोग करें, न कि उन कॉलेशनों का, जिनके नाम में कोई संस्करण संख्या नहीं है।

संपादित करें:
मुझे "हंगेरियन टेक्निकल" कोलाजेशन पर कुछ अतिरिक्त जानकारी मिली जो रुचिकर हो सकती है:

  • MySQL:हंगेरियन कोलेशन - यह कुछ MySQL डेवलपर्स द्वारा एक लिस्टसर्व चर्चा का एक संग्रह है, जो यह पता लगाने की कोशिश कर रहा है कि कॉलेशन को कैसे लागू किया जाए। स्पष्ट रूप से इसमें कुछ जटिल नियम हैं, कम से कम भाग में सॉर्टिंग के लिए एक ही वर्ण में एकाधिक वर्णों को समान करने की आवश्यकता के कारण (अनुभाग "3. विशेष डिग्राफ/ट्रिग्राफ नियम" देखें)। यह हो सकता है कुछ अप्रत्याशित व्यवहार का कारण। उस अनुभाग में विशिष्ट अक्षर संयोजनों को नोट किया गया है, इसलिए कम से कम यह एक परीक्षण केस सेट करना आसान बनाता है ताकि यह निर्धारित करने में सहायता मिल सके कि इस संयोजन का उपयोग करके सॉर्टिंग नियम अमान्य हैं या नहीं।

  • इतने सारे(106) हंगेरियन कोलाज क्यों हैं? -- यह social.msdn पर एक चर्चा है जिसमें कुछ रोचक जानकारी है। वहाँ एरलैंड सोमरस्को द्वारा एक टिप्पणी है जिसमें वह कहता है:

    MySQL डेवलपर्स से जटिल नियमों के बारे में चर्चा को देखते हुए, वे परीक्षा परिणाम आश्चर्यजनक नहीं लगते।

इसलिए, इन दोनों मदों को शायद यह तय करने में फ़ैक्टर किया जाना चाहिए कि NVARCHAR फ़ील्ड को इन हंगेरियन तकनीकी कॉलेशन में से किसी एक पर सेट करने का आसान मार्ग जाना है या नहीं, या गणना कॉलम की @ गैरेथडी की सिफारिश के साथ जाना है।

स्ट्रिंग्स और कोलाजंस के साथ काम करने के बारे में अधिक जानकारी के लिए, कृपया देखें:Collations Info



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2008 में hh:mm:ss फॉर्मेट में 24 घंटे से अधिक रिटर्न दें

  2. क्या SQL सर्वर डेटाबेस में ट्रिगर करने के लिए पैरामीटर पास करना संभव है?

  3. हर नौवें रिकॉर्ड की वापसी पंक्ति

  4. SQL सर्वर में फ़ाइल समूह का नाम वापस करने के लिए FILEGROUP_NAME() का उपयोग करें

  5. SQL सर्वर में किसी तालिका से विशिष्ट रिकॉर्ड कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल 112