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.