Jump to content


Photo

Buscas Usando Like E Similar To


  • Faça o login para participar
8 replies to this topic

#1 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 31/07/2008, 13:20

Sobre o LIKE
LIKE é usado amplamente em SQL quando queremos encontrar um valor mas só temos parte deste valor.
Exemplo:

Supomos que temos cadastro de pessoas com os seguintes registros:
:: João Silva Pereira
:: Carlos Martins
:: Eduardo Silva


Agora vamos supor que queremos selecionar todas as pessoas que tem o sobrenome Silva.
Não dá pra usar o o perador "=", porque nenhum dos registros é " = 'Silva'", mas alguns deles contém a Silva. Nesse caso usamos LIKE!

SELECT * FROM pessoas WHERE nome LIKE '%Silva%'
Se fizéssemos a consulta acima, a consulta retornaria o seguinte:
:: João Silva Pereira
:: Eduardo Silva

Perceba que Carlos Martins foi excluído do resultado por não conter a palavra Silva.

Se fosse o contrário, ou seja, selecionar todos que não têm o sobrenome Silva, bastaria usar o operador de negação.

SELECT * FROM pessoas WHERE nome NOT LIKE '%Silva%'
A consulta acima resultaria:
:: Carlos Martins


Estes "%" usados no LIKE não está alí por acaso. Na verdade são os % que fazem toda a mágica!
Os "%" significam "qualquer coisa" (em alguns outros SGBDs é usado o "*" ao invés de "%").
Se tivermos um "%" à esquerda do parâmetro (no caso do nosso exemplo o parâmetro era a palavra Silva), o LIKE vai procurar todos os nomes que possuam e terminem com o valor do parâmetro.
A mesma coisa acontece se mentivermos apenas o "%" da direita, com a diferença de que a consulta retornaria apenas os registros que começam com Silva.
Os exemplos abaixo ilustram isso:

SELECT * FROM pessoas WHERE nome LIKE '%Silva'
Retorno:
:: Eduardo Silva
SELECT * FROM pessoas WHERE nome LIKE 'Silva%'
Retorno:
(nenhuma linha foi encontrada porque nenhum nome começa com Silva)


No PostgreSQL o "%" tem um irmão: o "_".
A diferença é que, enquanto o % admite qualquer quantidade de caracteres, o "_" admite apenas uma. Exemplo:

SELECT * FROM pessoas WHERE nome LIKE 'Eduar_o Silva'
Retorno:
:: Eduardo Silva


Sem estes carcteres especiais o LIKE funciona exatamete com o "=". Exemplo:

SELECT * FROM pessoas WHERE nome LIKE 'Eduardo Silva'
Retorno:
:: Eduardo Silva
SELECT * FROM pessoas WHERE nome LIKE 'Silva'
Retorno:
(nenhuma registro foi encontrado, pois nenhum nome é = a Silva)


LIKE em case insensitive
No PostgreSQL o LIKE é case sensitive, ou seja, diferencia maiúsculas de minúsculas.
'SILVA' é diferente de 'Silva'
'SILVA' só é igual a 'SILVA'
Sabemos que nem sempre isso é interessante, pois nem sempre a pesquisa com os cases corretos. Para esses casos existe o iLIKE, que funciona da mesma forma que o LIKE, mas é case insensitive.
Exemplos:

SELECT * FROM pessoas WHERE nome LIKE '%silva%'
Retorno:
(nenhuma registro foi encontrado)
SELECT * FROM pessoas WHERE nome iLIKE 'silva'
Retorno:
:: João Silva Pereira
:: Eduardo Silva


Utilizando LIKE em todos os campos de uma tabela

Um recurso bem interessante é utilizar o LIKE em todos os capos de uam tabela de forma realmente simples! Para isto basta utilizar o nome da tabela (convertida para varchar, claro) ao invés do nome de um campo. Exemplo:

SELECT * FROM pessoas WHERE pessoas::varchar iLIKE 'silva'
Retorno:
:: João Silva Pereira
:: Eduardo Silva

Isso é possível porque quando utilizamos o nome da tabela ao invés do nome de um campo, o Postgres nos retorna uma string contendo todos os valores de todas as colunas, dispensando o trabalho chato de verificar coluna a coluna ou concatenar e converter todas elas.


Utilizando expressões regulares com SIMILAR TO
O LIKE não dá suporte a expressões regulares. Para isso é preciso usar o SIMILAR TO, que funciona exatamente como o LIKE, exceto por essa caraterística de suportar expressões regulares.

Sinônimos
O PostgreSQL têm operadores que funcionam exatamente com o LIKE e o SIMILAR TO. São eles:

~~ é o mesmo queLIKE
!~~ é o mesmo queNOT LIKE
~~*é o mesmo que iLIKE
!~~* é o mesmo que NOT iLIKE
~ é o mesmo que SIMILAR TO
~* é o mesmo que SIMILAR TO em case insensitive
!~ é o mesmo que SIMILAR TO, só que em negação
!~* é o mesmo que SIMILAR TO, só que em negação e em case insensitive


Retorno
O retorno sempre será true ou false.

#2 Sabinalu

Sabinalu
  • Visitantes

Posted 07/07/2015, 15:27

De acuerdo con Roman, Intenta algo como: Código SQL -Where campo like nom and nom

#3 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 11724 posts

Posted 26/09/2017, 05:26

Overdose Of Amoxicillin cialis Popular Pills Online Buy Priligy Usa Comprar Viagra Generico Seguro
Real Viagra Without A Script Naklofen Duo English Language viagra cialis Achat Kamagra Sur Internet
Cheap Price Viagra Costo Cialis Da 5 Vente Cialis France cialis price Medicament Lioresal

#4 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 11724 posts

Posted 10/10/2017, 16:41

Viagra Y Sus Efectos Amoxicillin Pink Medicine Cephalexin Without A Prescription levitra cialis viagra Kamagra Costo
Order Accutane From Canada cialis Buy Cialis On Line
Zythromax Or Cephalexin Caratteristiche Levitra In Farmacia viagra Lasix Side Effect Forum Cialis Et Viagra Need Stendra Low Price
Fucidin Usa Alternative achat levitra au usa Preisvergleich Cialis Ship Fast Doxycycline Staph Aureus Keflex

#5 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 11724 posts

Posted 15/10/2017, 13:48

Normal Dosage For Amoxicillin Doxycycline No Prescription Us Kamagra Anwendung viagra Online Kamagra Vermox Otc Or Rx

#6 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 11724 posts

Posted 26/10/2017, 19:50

Zithromax Children Cephalexin Dog Dosage Order Tab Acticin Permetrina Overseas levitra wholesale no prescription Purple Pharmacy Algodones Mexico Lariam Purchase
Propecia Efectos 5 Alfa Reductasa Dapoxetina Miglior Prezzo viagra online prescription Purchase Of Viagra
Viagra 50 Mg Pfizer Prix Misoprostol 20mg Avis levitra canada price Preise Cialis Generika Kamagra Pharmacie France Amoxicillin Dosage For Puppy

#7 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 13822 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 27/10/2017, 10:16

Levaquin Visa Shipped Ups Dutasteride Free Doctor Consultation buy viagra online Cephalexin Canine Side Effects Amoxicilina Free Shipping In Internet Derby

#8 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 11724 posts

Posted 28/10/2017, 05:59

Online Pharmacy India Cialis levitra cialis viagra Cialis 20 Mg Diabete
Rx247 Viagra Preisvergleich Cialis Bestellen online pharmacy Keflex Sinus Levitra Online Drugstore Viagra Generique Dangereux
Achat Kamagra Oral Jelly Amoxicillin Dosage Children Vente Baclofen En France is it safe to buy levitra on line Costo Viagra Pfizer Generic Doryx Mastercard

#9 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 11724 posts

Posted 08/11/2017, 05:26

Cialis 5 Mg Alcohol canadian levitra Best Buy Doxycycline Comprar Cialis Uso Diario




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq