O SQL Server Escapar um carácter de Sublinhado
-
08-06-2019 - |
Pergunta
Como posso escapar o caractere de sublinhado?
Eu estou escrevendo algo como a seguinte cláusula where e quero ser capaz de encontrar entradas com _d no final.
Where Username Like '%_d'
Solução
Referência T-SQL para SQL Server 2000:
Você pode usar o caractere curinga padrão de correspondência de caracteres como caracteres literais.Para usar um caractere curinga como um caractere literal, coloque o caractere curinga entre parênteses.A tabela mostra vários exemplos de COMO usar de palavras-chave e o [ ] caracteres curinga.
Para o seu caso:
... LIKE '%[_]d'
Outras dicas
Obviamente @Lasse solução é certo, mas não há outra maneira de resolver o seu problema:T-SQL operador LIKE
define o opcional ESCAPE cláusula, que permite que você declare uma personagem que irá escapar o próximo caractere no padrão.
Para o seu caso, as seguintes cláusulas WHERE são equivalentes:
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
Estas soluções totalmente fazer sentido.Infelizmente, nem pra mim funcionou como o esperado.Em vez de tentar se preocupar com ele, eu fui com um trabalho em torno de:
select * from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name
Isso funcionou para mim, basta usar o escape
'%\_%'