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.~_]
. में बदलने की जरूरत है ) वह भी ऊपर मेरे परीक्षण के परिणाम से मेल खाता है।