Como escapar de um sinal de porcentagem no T-SQL?

188

Esta pergunta também tem a resposta , mas menciona o DB2 especificamente.

Como faço para procurar uma seqüência de usar LIKEque já tem um por cento %símbolo nele? O LIKEoperador usa %símbolos para significar caracteres curinga.

Jedidja
fonte

Respostas:

285

Use colchetes. Então, procurar 75%

WHERE MyCol LIKE '%75[%]%'

Isso é mais simples que o ESCAPE e comum à maioria dos RDBMSes.

gbn
fonte
2
Observe também que você não precisa escapar de um símbolo de porcentagem em outras construções, como uma função de usuário, concatenação etc.
Bron Davies
2
Você pode escapar também o caractere curinga sublinhado também: [_]. Como você escapa do colchete aberto então? Como esta: [[]. sqlserver2000.databases.aspfaq.com/…
Csaba Toth
O uso da cláusula ESCAPE é mais fácil de entender do que o mecanismo de cotação com danos cerebrais da MS.
precisa saber é o seguinte
52

Você pode usar a ESCAPEpalavra-chave com LIKE. Simplesmente acrescente o caractere desejado (por exemplo, '!') A cada um dos %sinais existentes na string e adicione ESCAPE '!'(ou seu caractere de escolha) ao final da consulta.

Por exemplo:

SELECT *
FROM prices
WHERE discount LIKE '%80!% off%'
ESCAPE '!'

Isso fará com que o banco de dados trate 80% como uma parte real da string a ser pesquisada, e não 80 (curinga).

Documentos do MSDN para LIKE

Jedidja
fonte
14
WHERE column_name LIKE '%save 50[%] off!%'
Aaron Bertrand
fonte
0

No MySQL ,

WHERE column_name LIKE '%|%%' ESCAPE '|'

Kishan Solanki
fonte
Mas a pergunta era sobre T-SQL.
Peter Mortensen