Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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. ;)
>
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.
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. :)
Ah, lembrei de outra possibilidade para não utilizar o script, seria a utilização de consulta por expressões regulares. Se você não conhece, recomendo muito, vai salvar sua pele muitas vezes. Livro online, excelente leitura: http://aurelio.net/regex/guia/
http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html
http://dev.mysql.com/doc/refman/5.7/en/fulltext-natural-language.html