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)
Devoluciones
----------- ----------- ----------- -----------
1 5 5 5
Entonces parece que para varchar
tipos de datos un final -
se trata como parte de un conjunto mientras que para nvarchar
se ignora (se trata como un rango mal formado como a
se ignora también?)
La entrada BOL para ME GUSTA
no habla explícitamente sobre cómo usar -
dentro de []
para que sea tratado como parte de un conjunto pero tiene el ejemplo
LIKE '[-acdf]'
para hacer coincidir -, a, c, d, or f
así que supongo que debe ser el primer elemento de un conjunto (es decir, que [^a-zA-Z0-9.~_-]
debe modificarse a [^-a-zA-Z0-9.~_]
). Eso también coincide con el resultado de mis pruebas anteriores.