Jump to content


Photo

Pesquisa Avançadas à Base De Dados


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

#1 lbento0077

lbento0077

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 24/07/2006, 22:25

Oi Pessoal,

Neste momento estou com uma dúvida que é a seguinte: Estou a usar o PostgreSQL 8.1 e o PHP5
Vamos imaginar que tenho um registo na base de dados com o nome Paulo Andrade Lopes Luís

A base de dados terá que me devolver este registo nos seguintes cenários:

1 - Se eu escrever em maiúsculas, ou escreva em minusculas ou ambas (já consegui). :-)
Passei tudo para maiúsculas com a seguinte query:

SELECT nome FROM utilizadores WHERE UPPER(nome) LIKE UPPER('%$nome%') ORDER BY nome";

2 - Se por exemplo eu escrever Luís ou Luis(já consegui, fiz uma pesquisa no google) :-)
Criei duas funcoes iguais só que uma para o php e a outra para o postgresql e depois comparo-as na pesquisa a bd

funcao em php:
function retira_acentos($texto)
{
$array1 = array("á", "à", "â", "ã", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö", "ú", "ù", "û", "ü", "ç"
, "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö", "Ú", "Ù", "Û", "Ü", "Ç" );
$array2 = array("a", "a", "a", "a", "a", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "u", "u", "u", "u", "c"
, "A", "A", "A", "A", "A", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "C" );

return str_replace($array1, $array2, $texto);
}

?>

funcao em postgresql:
CREATE FUNCTION sem_acentos (text) RETURNS text AS
'SELECT translate( ($1),
text ''áàâãäéèêëíìîïóòôõöúùûüçÁÀÂÃÄÉÈÊËÍÌÎÏÓÒÔÕÖÚÙÛÜÇ'',
text ''aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC'')
' LANGUAGE SQL STRICT;

3 - Se escrever Paulo Lopes, ou Andrade Luís ou Paulo Luís (ainda não consegui) :-(
Neste momento estou parado aqui, tentando descobrir uma solucao....

4 - Se escrever Paulo Andrade Lopes Luís, ou Paulo Andrade ou Lopes Luís ou ...(já consegui) :-)
A query do ponto 1, tambem resolve este problema

Alguém me pode ajudar?
Obrigado

Edição feita por: lbento0077, 25/07/2006, 10:32.


#2 aimola

aimola

    Webdeveloper

  • Usuários
  • 471 posts
  • Sexo:Masculino
  • Localidade:Sampa

Posted 25/07/2006, 08:38

Infelizmente estou sem tempo para lhe ajudar nas funções que ainda não conseguiu, porém, sugiro que poste as soluções que já encontrou para que os demais membros saiba como resolver caso venha a se deparar com tais dificuldades.

;)
Abraço!
Que os passos de hoje sejam maiores que os de ontem
e que os passos de amanhã sejam mais largos que os de hoje.

#3 ursolouco

ursolouco

    Normal

  • Usuários
  • 92 posts
  • Sexo:Não informado

Posted 25/07/2006, 08:39

Brother!!!

Uma possivel solucao é utilização de LIKE ou REGEXP (no mysql rola na boa) para sua aplicação. Ou vc fazer um preg_replace e remover todo os acentos da sua palavra e pesquisar no db.

[]s
Boa Programação!
-------------------------------------------------------------------------------------
http://www.desenvolvendosites.com

#4 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 25/07/2006, 08:44

Um tempinho atras o Eclesiastes ou o Vidaloka respondeu um dúvida de um usuário usando o BINARY do SQL

SELECT * FROM tabela WHERE campo BINARY LIKE '%valor%'
por favor corrijam a QUERY, caso esteja errada.

Qualquer coisa, procure aqui no fórum sobre BINARY

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951




1 user(s) are reading this topic

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

IPB Skin By Virteq