Select - Como encontrar palavras acentuadas?

Firebird

08/12/2003

Olá pessoal da lista.

já vi muitas dúvidas sobre acentuação, e pessoas falando pra substituir os acentos das palavras pela respectiva palavra sem acento.
ex: Se digitarem ´Fórum´ substitui e fica ´Forum´.
... e se for o inverso?
Se pesquisam ´Forum´ ? Como vou encontrar a palavra ´Fórum´ :?:

Eu utilizo o Mysql em sites que faço e ele resolve isso pra mim sem problemas. Mas estou querendo deixar todos meus programas e futuros sites em Firebird. E acentuação é um dos itens principais numa pesquisa.

Alguem pode me ajudar quanto a isso?

Obrigado,
Carlos


Carlos_simioni

Carlos_simioni

Curtidas 0

Respostas

Afarias

Afarias

08/12/2003

|já vi muitas dúvidas sobre acentuação, e pessoas falando pra substituir
|os acentos das palavras pela respectiva palavra sem acento.

o IB (ou FB) não possui nenhum problema com acentos. Vc pode (e deve) usá-los sempre (acho q todos no Brasil por exemplo usam) -- basta selecionar um CHARACTER SET apropriado, por ex:: ISO8859_1


T+


GOSTEI 0
Carlos_simioni

Carlos_simioni

08/12/2003

Olá A. Farias,

refiz meu BD e coloquei o Character Set como ISO8859_1. ficou ok. palavras acentuadas estão sendo incluidas normalmente. :D

agora, tem outra duvida que eu gostaria de saber se tem como fazer:
se eu tenho a palavra ´fórum´ cadastrada no meu BD, mas meu cliente digita ´forum´ (sem acento) na pesquisa. o firebird não retorna nenhum resultado. o que posso fazer :?:

Obrigado,
Carlos


GOSTEI 0
Afarias

Afarias

08/12/2003

uma opção é criar uma UDF (se é q não existe uma por ai) --- com uma função que pegaria qualquer palavra do banco e substituiria os caracteres com acentos por caracteres sem::

dai vc poderia usar como::

select * from sua_tabela
where sua_funcao(seu_campo) = ´forum´

e onde tivesse ´fórum´ sua_funcao retornaria ´forum´


outra forma, seria fazer esta função no cliente, e ter dois campos:: um com valor real e outro com o valor sem ou acentos, cedilhas, etc...

quando o usuário cadastra-se algo, vc gravaria os valores com e sem acentos... e faria a busca sempre no campo sem os acentos.

claro q se na busca (para ambos os casos acima) o usuário colocar a palavra com acento, vc tira o ancento antes de realizar a busca.



T+


GOSTEI 0
Caninha51

Caninha51

08/12/2003

Sei que o tópico é antigo mas serve pros outros...

Vc poderia fazer uma função no delphi para substituir os caracateres acentuados, cedinhas.... pelo caractere coringa ´_´ (underline).


Ai vc faria um like na consulta sql...

Ficaria assim...

SELECT * FROM TABELA WHERE NOME LIKE ´¬JO_O¬´

Assim ele listaria todos JOÃO, JOAO, JOÂO... inclusive JOSO...

Como disse, ele é um caractere coringa! :)


Falow!!!


GOSTEI 0
Afarias

Afarias

08/12/2003

A dica é boa caninha51, mas deve ser usada com cautela. Deve se estar a tento q buscas como esta não podem usar índice.


T+


GOSTEI 0
POSTAR