Qual é a melhor maneira de verificar se um campo VARCHAR possui caracteres não ASCII?
CHAR(1)
através CHAR(31)
e CHAR(127)
através CHAR(255)
.
Tentei usar PATINDEX
e me deparei com o seguinte problema.
A verificação do intervalo inferior funcionou corretamente.
SELECT *
FROM mbrnotes
WHERE PATINDEX('%[' + CHAR(1)+ '-' +CHAR(31)+']%',LINE_TEXT) > 0
Meus dados tinham três registros com 0x1E e todos os três foram retornados.
Mas quando eu verifico apenas o intervalo superior:
SELECT *
FROM mbrnotes
WHERE PATINDEX('%[' + CHAR(127)+ '-' +CHAR(255)+']%',LINE_TEXT) > 0
Ele retorna perto de todos os registros da tabela (tabela contagem 170737 e retornou contagem 170735) e como meus dados não tinham nenhum valor nesse intervalo eu acho que não deveria ter retornado nenhum registro.