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

SQL सर्वर 2008 R2 - स्केलर UDF अनंत लूप में परिणाम देता है

SELECT PATINDEX('%[^a-]%', N'aaa-def' COLLATE Latin1_General_BIN),
       PATINDEX('%[^-a]%', N'aaa-def' COLLATE Latin1_General_BIN), 
       PATINDEX('%[^a-]%', 'aaa-def' COLLATE Latin1_General_BIN),
       PATINDEX('%[^-a]%', 'aaa-def' COLLATE Latin1_General_BIN)

रिटर्न

----------- ----------- ----------- -----------
1           5           5           5

तो ऐसा लगता है कि varchar . के लिए डेटाटाइप एक पिछला - एक सेट का हिस्सा माना जाता है जबकि nvarchar . के लिए इसे अनदेखा कर दिया जाता है (एक विकृत श्रेणी के रूप में a . के रूप में माना जाता है अनदेखा भी किया जाता है?)

LIKE के लिए BOL प्रविष्टि - . का उपयोग करने के तरीके के बारे में स्पष्ट रूप से बात नहीं करता है [] . के भीतर इसे एक सेट के हिस्से के रूप में माना जाए, लेकिन इसका उदाहरण है

LIKE '[-acdf]'

-, a, c, d, or f . से मेल खाने के लिए इसलिए मुझे लगता है कि यह एक सेट में पहला आइटम होना चाहिए (यानी वह [^a-zA-Z0-9.~_-] [^-a-zA-Z0-9.~_] . में बदलने की जरूरत है ) वह भी ऊपर मेरे परीक्षण के परिणाम से मेल खाता है।



  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. SQL सर्वर:कॉलम में पंक्तियाँ

  3. SQL सर्वर लैच और प्रदर्शन समस्याओं के उनके संकेत

  4. एक्सएमएल नाम आउटपुट कॉलम के लिए एसक्यूएल यूनियन

  5. क्या Microsoft तीन-मूल्यवान फ़ील्ड को एक बिट में संग्रहीत कर सकता है?