Uma necessidade comum com dados em língua portuguesa são as buscas no bancos de dados insensível a caso e insensível a acentos.
No MySQL, até a versão 4.0, as consultas eram por padrão insensível ao caso (case-insensitive) e insensível ao acento (accent-insensitive). Isso mudou, porém, a partir da versão 4.1, que introduziu um suporte melhorado a comparações (collations) e definições de caracteres (charsets). Alguns desenvolvedores devem ter ficado surpresos com suas buscas que antes ignoravam acentos e maiúsculas e agora já exigiam que se colocasse.
A partir dessa versão, a sintaxe para uma consulta que ignora acentos e o caso seria a seguinte:
SELECT *
FROM `tab_municipios`
WHERE `NomeMunic` = _utf8 'SAO PAULO' COLLATE utf8_unicode_ci
Adaptado de Consultas case-insensitive no PostgreSQL e no MySQL





April 9th, 2007 at 10:33 pm
Legal, era isso que eu procurava! Parabéns pela boa apresentação do site também.
[Reply]
April 10th, 2007 at 12:46 pm
Marcelo,
Por ser algo imprescindível, eu não podia deixar de publicar. Abraços.
[Reply]
September 13th, 2007 at 9:46 am
Tenho dúvidas sobre o uso do case e accent sensitive / insensitive e suas informações me foram úteis.
Instalei o Tikiwiki do http://www.sourceforge.org e gostei muito do software. Ele é escrito em PHP e usa MySQL.
Apesar de funcionar corretamente, observei que as funções de pesquisa diferenciam palavras acentuadas das não acentuadas mas eu gostaria que o software não fizesse essa distinção.
Tenho encontrado dificuldades de encontrar respostas na documentação disponível.
Imaginava que a alteração poderia passar pelo charset / collating / code page do banco, pela configuração do próprio sw, ou até mesmo pela combinação de ambas.
Apesar de ter sido DBA por muitos anos, hoje estou mais afastado do setor de desenvolvimento. Tenho pouco conhecimento do MySQL e PHP, e necessito de ajuda para essa dúvida.
A instalação do PHP e MySQL foi feita usasndo o Xampp, que fez todo o trabalho. Usei a instalação default.
Talvez tenha de fazer alguma reconfiguração…
Você pode me auxiliar com alguma informação? Ou então, poderia me indicar algum local onde possa encontrar documentação mais detalhada ou que possa resolver meu problema?
[Reply]
September 13th, 2007 at 12:33 pm
Mesmo que seu banco esteja configurado para utilizar utf-8, como é o meu caso, é necessário esse ajuste na consulta. Infelizmente, não encontrei material com mais informações sobre isso.
[Reply]
November 29th, 2007 at 1:51 pm
Boa tarde, estou com um problema na acentuação, para falar a verdade na busca. Meu BD está UTF-8, mas tipo, se tenho o valor de um campo desta maneira: padrões, mas se buscar por PADROES, PADRÕES ou padroes, não retorna resultados. Retorna resultados se eu buscar como padrões, PADRões, PaDrõES etc. Tem como eu buscar case-insensitive (mesmo nos acentos) no MySQL? Já tentei diversar formas e nenhuma deu resultado.
Obrigado.
[Reply]
December 1st, 2007 at 10:48 am
Thiago,
A forma de busca foi a que demonstrei acima. Caso ela não funcione, há algum problema na instalação do seu MySQL ou você está buscando um campo que não possua a palavra.
[Reply]
May 27th, 2008 at 5:11 am
Fala Rafael,
Estava tendo problema com essas questões de acentos, até tinha criado função de tirar acentos, mais queria algo no sql mesmo, e gostei muito de procurar no Yahoo e achar a solução aqui.
Primeira vez que visito e peguei uma ajuda boa.
Valeu Rafael.
Ass.: DJ Mib
[Reply]
May 29th, 2008 at 3:59 am
Legal, DJ! Volte sempre!
[Reply]