Сначала создайте строку со всеми символами, которые вас не интересуют (в примере используется диапазон 0x20 - 0x7F или 7 бит без управляющих символов). Каждому символу предшествует |, для использования в предложении escape позже .
-- Start with tab, line feed, carriage return
declare @str varchar(1024)
set @str = '|' + char(9) + '|' + char(10) + '|' + char(13)
-- Add all normal ASCII characters (32 -> 127)
declare @i int
set @i = 32
while @i <= 127
begin
-- Uses | to escape, could be any character
set @str = @str + '|' + char(@i)
set @i = @i + 1
end
В следующем фрагменте выполняется поиск любого символа, которого нет в списке. % Соответствует 0 или более символам. [] Соответствует одному из символов внутри [], например [abc] будет соответствовать либо a, b, либо c. ^ Отрицает список, например [^ abc] будет соответствовать чему-либо, кроме a, b или c.
select *
from yourtable
where yourfield like '%[^' + @str + ']%' escape '|'
Экранирующий символ необходим, потому что в противном случае поиск таких символов, как],% или _, может испортить выражение LIKE.
Надеюсь, что это полезно, и благодаря комментарию JohnFX к другому ответу.