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、または f
に一致する したがって、セットの最初のアイテムである必要があると想定しています(つまり、その[^a-zA-Z0-9.~_-]
[^-a-zA-Z0-9.~_]
に変更する必要があります )。これは、上記のテスト結果とも一致します。