Escapando dos curingas em queries LIKE

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Na maioria dos sistemas operacionais, usa-se o * (asterisco) e o ? (ponto de interrogação) para se referir a curingas.

Sabemos que para consultar em SQL usando "curingas" usa-se o LIKE, mas os curingas são diferentes:
Para múltiplos caracteres, usa-se o % e para um caracter é o _ (underline). Vamos aos exemplos:

Selecionar tudo

SQL> select * from tabela where campo like 'MAR_A';

CAMPO
------------------------------
MARIA
MARTA

SQL> select * from tabela where campo like 'MAR%A';

CAMPO
------------------------------
MARIA
MARTA
MARCIA
Agora, digamos que eu queira buscar todos as linhas que tiveram 20% - Vamos ao exemplo:

Selecionar tudo

SQL> select * from tabela where campo like '20%';

CAMPO
------------------------------
20% JUROS
200% MEDIA
20% DESCONTO

ERRO! Trouxe também 200%!!! Não é o que queremos! Vamos então "escapar" esse caracter da consulta:

Selecionar tudo

SQL> select * from tabela where campo like '20~%%' escape '~';

CAMPO
------------------------------
20% JUROS
20% DESCONTO
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Apenas para complementar:

Se você está no SQL*Plus, pode usar o SET ESCAPE x (onde x é um caractere). Dai esse caractere passa a ser o curinga.

Selecionar tudo

SET ESCAPE '$'
SELECT * FROM TABELA WHERE COL LIKE '$10%$'
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 17 visitantes