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'
Foi útil?

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 '%\_%'

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top