[OFF MYSQL] busca que "contem expressão"

1,500 views
Skip to first unread message

thiago freitas

unread,
Nov 26, 2008, 11:07:01 AM11/26/08
to LISTA PHP
como faço uma busca no mysql que contem a expressão?

por exemplo, loja virtual, tenho centenas de produtos, quero buscar a
descrição que contem

"pé"
ai traria

cadeira 2 pés
cadeira 3 pés
cadeira 4 pés
cadeira sem pé

etc

Gustavo Almeida

unread,
Nov 26, 2008, 11:08:59 AM11/26/08
to list...@googlegroups.com
select * from prodrutos where nome like ('%pé%')
 
Não sei se a sintaxe tá certa, mas é + ou - isso aí
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Novo grupo PHP - Brasil
http://groups.google.com.br/group/dev-php-br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Grupo de VB6 - Brasil
http://groups.google.com.br/group/vb6brasil
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Visite:
http://www.kibando.com.br/
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Diogo Roldão

unread,
Nov 26, 2008, 11:11:22 AM11/26/08
to list...@googlegroups.com
coloca: select ... from ... where campo like "%pé%"
 
sendo que:
% no começo significa qualquer coisa no começo do conteudo do campo
% no final significa qualquer coisa no final do conteudo do campo
% no começo e no final significa qualquer coisa em qualquer lugar do campo
 
 
isso é extremamente básico do SQL, se vc pesquisasse na internet vc acharia com facilidade.
[ ]'s...

2008/11/26 thiago freitas <thiagos...@gmail.com>

Anderson Aguiar

unread,
Nov 26, 2008, 11:13:20 AM11/26/08
to list...@googlegroups.com
acho q invertesse as bolas diogo...

sendo que:
% no começo significa qualquer coisa no FINAL do conteudo do campo
% no final significa qualquer coisa no COMEÇO do conteudo do campo
% no começo e no final significa qualquer coisa em qualquer lugar do campo


2008/11/26 Diogo Roldão <diogo...@gmail.com>



--
----------------------------------------
Att Anderson Aguiar
Cel: 8811-0465
Site: www.revsoft.info
E-mail: revs...@gmail.com


leandro veronezi

unread,
Nov 26, 2008, 11:14:23 AM11/26/08
to list...@googlegroups.com
Eu já trabalhei com essa função like ('%pé%') mas não funciona.

Funcionaria perfeitamente se eu digitase "pe" para encontrar
encontrar qualquer a palavra "pé" mas não funciona se vc digitar "pé" para encontrar qualquer dado no banco que contenha a palavra "pé"




2008/11/26 Gustavo Almeida <gus...@gmasoftwares.com.br>

Gustavo Almeida

unread,
Nov 26, 2008, 11:15:11 AM11/26/08
to list...@googlegroups.com
Acho que seu problema, então, tá na acentuação.
 
Pro MySQL "pé" é diferente de "pe".
 
Faz um script, então, pra tratar esses possíveis acentos...
 
Mas no MySQL vai ter que usar o LIKE mesmo...

Gustavo Almeida

unread,
Nov 26, 2008, 11:15:54 AM11/26/08
to list...@googlegroups.com
Hã?????
 
% no começo significa QUALQUER COISA NO COMEÇO!!!!!!!!!!!
% no final, significa QUALQUER COISA NO FINAL!!!!!!!!
 
Você é que inverteu!!!
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Novo grupo PHP - Brasil
http://groups.google.com.br/group/dev-php-br
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Grupo de VB6 - Brasil
http://groups.google.com.br/group/vb6brasil
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Visite:
http://www.kibando.com.br/
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
----- Original Message -----
Sent: Wednesday, November 26, 2008 2:13 PM
Subject: [ PHP - Google ] Re: [OFF MYSQL] busca que "contem expressão"

leandro veronezi

unread,
Nov 26, 2008, 11:23:20 AM11/26/08
to list...@googlegroups.com
Bem lembrado Gustavo, eu uso o banco postgres e também tenho esse problema de acentuação.

2008/11/26 Gustavo Almeida <gus...@gmasoftwares.com.br>

LuisRohden

unread,
Nov 26, 2008, 11:24:59 AM11/26/08
to LISTA PHP
Leandro, ficou um pouco confusa sua colocação. Deixa ver se eu entendi
bem, você está tendo um problema caso a consulta seja ou não
acentuada. Está correto?
Caso seja isso é porque para o mysql os dois dados "pe" e "pé" são
diferentes. Normalmente eu faço uma função que grave no banco sempre
sem acentos, e que ao consultar faça a mesma coisa.

Um detalhe importante a salientar é que quando você usa o like '%pe%'
buscaria no banco tambem strings como "pedaco", "canape" e "aperto",
entre outros.

Uma sugestão é ver se você não tem como colocar em vez de um like, uma
expressão regular - regex. Acredito que isso seja mais saudavel a
performance do banco.

Bom, se não for isso. Deixe mais detalhes.

Tiago Gigli

unread,
Nov 26, 2008, 11:34:17 AM11/26/08
to list...@googlegroups.com
soundex()
--------------------------------------------
Tiago Gigli
MyGSM: +55 (15) 8116-5168
Eml/MSN/GTalk: ti...@gigli.com.br
Twitter: tiagogigli
--------------------------------------------
http://perolasdocar.blogspot.com/
http://tiago.gigli.com.br


2008/11/26 leandro veronezi <leandro...@gmail.com>

Diego Piccolo

unread,
Nov 26, 2008, 11:37:16 AM11/26/08
to list...@googlegroups.com
MySQL soundex resolve..

só explicando como funciona o soundex  ele compara por sons, por exemplo john, jhom johm, (pe pé).. etc etc..

a única coisa que você precisa ficar atento é que soundex não funciona para numero, se vc colocar soundex('1') ele retorna o mesmo coeficiente que soundex('10002128913818381');

Obrigado,
Diego Piccolo.

2008/11/26 LuisRohden <luisr...@gmail.com>

Diogo Roldão

unread,
Nov 26, 2008, 11:41:07 AM11/26/08
to list...@googlegroups.com
é verdade Tubarãozense!
esses % confudem ... :P
 
se vc colocar where campo like "pé%" significa que vc quer tudo que começe com pé;
se vc colocar where campo like "%pé" significa que vc quer tudo que termine com pé;
se vc colocar where campo like "%pé%" significa que vc quer qualquer coisa que tenha pé em qualquer lugar;
e sobre acentos, nao sei qual versão de mysql vcs usam, eu aqui to com mysql 5.1.28 e se eu colocar tanto "pe" qnto "pé" sai o mesmo resultado.
[ ]'s...
 

 
2008/11/26 Anderson Aguiar <revs...@gmail.com>

leandro veronezi

unread,
Nov 26, 2008, 11:47:59 AM11/26/08
to list...@googlegroups.com
Quase isso Luis, me desculpe se ficou um pouco confuso.

Eu uso o banco de dados Postgres e eu não posso gravar informações sem acentos porque esse banco é de um sistema muito importante a nível nacional. Quando eu faço uma busca no banco com a palavra acentuada "café" o banco não me retorna nada, mas quando a busca é "cafe" ele me retorna a palavra "café" e qualquer outra palavra no banco.


No começo eu usava a expressão ILIKE mas não funcionava dai eu mudei para

lower(to_ascii(projeto.projeto_titulo)) ilike lower(to_ascii('%" . $titulo . "%'))

mas continua igual.

Messias Bittencourt

unread,
Nov 26, 2008, 11:38:37 AM11/26/08
to list...@googlegroups.com
Galera,
$nome = "João";
"SELECT * FROM TABELA WHERE nome LIKE '%".$nome."%'";

significa que... ele vai buscar tudo que tiver "João" no meio... exemplo:

Maria João da Silva <-- ele retorna true...

Maria Joao da Silva <-- ele retorna false...

o LIKE % serve pra pegar tudo que tenha determinada expressão...

2008/11/26 Tiago Gigli <ti...@gigli.com.br>



--
Um Abraço,
Messias Bittencourt

LuisRohden

unread,
Nov 27, 2008, 7:27:55 AM11/27/08
to LISTA PHP
Bom dia Leandro.
Na verdade eu ainda tenho a impressão que gravar no banco sem acento
seja uma opção razoavel, mas isso não precisa ser feito no campo nome.
A idéia que eu uso nestes casos é criar um campo paralelo ao campo
nome. E este usar só para pesquisa..

Exemplo tabela

tabela: usuario

id nome...............................pesquisa
1 João Maria.......................joao
maria.
2 Maria Cristina Santos........maria cristina santos
3 Luís Frederico da Silveira...luis frederico da silveira
4 Luis Carlos....................... luis carlos


no caso a busca que a pessoa digitasse "Luís"
você transformaria a consulta dela em "luis"

e retornaria as respostas do id 3 e do id 4.

funcoes para a tranformacao

1.str_replace($acentuacoes,$substitutas,$texto);
2.strtolower($texto);

Webfamily

unread,
Nov 28, 2008, 12:44:53 PM11/28/08
to list...@googlegroups.com

Galera como poderia fazer uma busca detalhada no mysql seria + ou – isso ?

 

<?

                $idComida= $_GET[idComida];

                $idCategoria= $_GET[idCategoria];

                $idZona= $_GET[idZona];

                $palavra=$_GET[palavra];

               

                $sql = mysql_query ("SELECT * FROM anuncios WHERE idComida LIKE '%idComida%' OR idCategoria '%$idCategoria%' OR idZona LIKE '%idZona%' OR descricao LIKE '%$palavra%' ");

 

?>

 

Pq isso não esta funcionando, queria uma busca em que em eu tenho 3 campos selects que puxa os dados do mysql e um campo imput pra pessoa digitar a palavra chave pra buscar no site aonde tenho o campo DESCRIÇÃO  no mysql.

 

Alguem poderia me dar uma ajuda

 

Obrigado

 

logo_webfamily
Atenciosamente:

Eder B. Zuca

WebFamily Criação e Hospedagem de Sites
Fones: (11) 4748-4568 / 3409-5267 / 9926-3331

Msn: webf...@webfamily.com.br
Skype: host2006

www.webfamily.com.br


LuisRohden

unread,
Nov 28, 2008, 1:09:50 PM11/28/08
to LISTA PHP
Gostaria de fazer uma observação pertinente ao uso da função soundex,
eu já procurei algumas maneiras de melhora-la, de utiliza-la trazendo
os melhores resultados possiveis - como já citei na discução do
funcionamento da função "você quiz dizer" do google.
Importante notar um ponto importante: ela funciona muito bem para
palavras em ingles, para outras linguas, como éo caso do portugues,
ela deixa bastante a desejar.

Thalis Valle

unread,
Nov 28, 2008, 2:01:16 PM11/28/08
to list...@googlegroups.com
Não sei se pode colocar anexo na lista. Se não pode, perdão. Não vai voltar a repetir.
Mas eu tenho um pdf legal sobre isso. Vejam em anexo.

Abraço
Thalis Valle
http://www.thalisvalle.com/


2008/11/28 Webfamily <webf...@webfamily.com.br>



--
Thalis Valle
http://www.thalisvalle.com/

regesxp_mysql.pdf
Reply all
Reply to author
Forward
0 new messages