Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago Lenzi

SELEC que contenha determinada palavra

Recommended Posts

Meus caros.

 

Preciso buscar na tabela usuários, todos os nomes que estão na coluna nome e que siga o seguinte exemplo.

 

Nome Referência = João Augusto.

 

Preciso que traga todos os nomes que tenham o nome João.

 

Ex.

 

João Carreiro

João Capataz

João Latino

João Pagodinho

João Bial

João Faustão

Augusto Flavio

...

 

Como posso escrever esse SELECT?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago, você pode fazer assim:

SELECT `nome`  FROM `usuarios` WHERE `nome` LIKE '%João%'

E para lista todos que contenham ou João ou Augusto:

SELECT `nome` FROM `usuarios` WHERE `nome` LIKE '%João%' OR `nome` LIKE '%Augusto%' 

OBS - Não acho que seja uma boa prática acentuar o nome da tabela. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago, você pode fazer assim:

E para lista todos que contenham ou João ou Augusto:

SELECT `nome` FROM `usuarios` WHERE `nome` LIKE '%João%' OR `nome` LIKE '%Augusto%' 

OBS - Não acho que seja uma boa prática acentuar o nome da tabela. ;)

 

Sim, você tem razão. É o corretor.

 

Como terei de adaptar a minha aplicação em sua linguagem e vejo.

 

Terei de explodir cada palavra, transformar em um array, medi-lo e criar essa parte do select o "LIKE" de forma dinâmica.

 

 

 

 

Estou analisando na dica do Motta mas, não consigo visualizar de forma que funcione com uma comparação objetiva.

 

Exemplo.

 

Se estiver pesquisando algo parecido com Julis Biachi Telfis Sampaio.

 

Pode ser que no banco os 3 primeiros nomes seja únicos. No entanto, existem outros

 

3 que tem Sampaio.

 

 

Teodoro e Sampaio

Alcione Sampaio

Marco Sampaio

 

 

Enfim. Você vê algum comparador para essa situação ou terei que fazer uma própria e longa função, perdendo assim Performance.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thiago, pelo que vejo, você vai precisar pesquisar dados com uma variável "nome".

 

Que o Motta me corrija se eu falar besteira. rs, mas você vai precisar passar para o MySQL o valor da variável a cada consulta. Mas você não vai perder performance não. Você pode inclusive, fazer um loop em PHP para realizar apenas uma consulta ao banco.

 

Ex.:

<?php

$nomeBuscado = $_POST['busca'];
$listaNomes = explode(" ", $nomeBuscado);
$qtdNomes = count($listaNomes);

for ($i = 0 ; $i < $qtdNomes ; $i++) {

  if ($i == 0) {$sql = "WHERE `nome` LIKE '%{$listaNomes[$i]}%'";}
  if ($i > 0) {$sql .= "OR `nome` LIKE '%{$listaNomes[$i]}%'";}

}

mysql_query("SELECT `nome` FROM `usuarios` {$sql};");

?>

Espero que ajude. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.