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)
Vrátí
----------- ----------- ----------- -----------
1 5 5 5
Zdá se tedy, že pro varchar
datové typy koncové -
je považováno za součást sady, zatímco pro nvarchar
je ignorován (zacházeno jako s chybným rozsahem jako a
je také ignorován?)
Záznam BOL pro LIKE
nehovoří výslovně o tom, jak používat -
v rámci []
aby to bylo považováno za součást sady, ale má příklad
LIKE '[-acdf]'
aby odpovídaly -, a, c, d, or f
takže předpokládám, že to musí být první položka v sadě (tj. [^a-zA-Z0-9.~_-]
je třeba změnit na [^-a-zA-Z0-9.~_]
). To také odpovídá výsledku mého testování výše.