você está aqui: Home  → Arquivo de Mensagens Programe sua mente para aprender inglês - ebook gratuito

Consultas case-insensitive no PostgreSQL e no MySQL

Colaboração: Walter Rodrigo de Sá Cruz

Data de Publicação: 29 de Dezembro de 2006

Uma necessidade comum a desenvolvedores é fazer suas buscas no bancos de dados insensível a caso e insensível a acentos.

No Postgres, uma das formas de fazer uma consulta desse tipo é a seguinte:

  SELECT nomemunic FROM tab_municipios 
         WHERE lower(to_ascii(nomemunic)) like lower(to_ascii('%Paulo%'))

Que buscará todos os nomes de município que tenham a palavra Paulo neles.

Observe que poderíamos fazer até uma salada de acentos e maíusculas - o resultado seria o mesmo.

  SELECT nomemunic FROM tab_municipios WHERE 
         lower(to_ascii(nomemunic)) like lower(to_ascii('%PáuLô%'))

No MySQL, até a versão 4.0, as consultas eram por padrão case-insensitive e accent-insensitive. Isso mudou, porém, a partir da versão 4.1, que introduziu um suporte melhorado a collations e charsets.

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


Veja a relação completa dos artigos de Walter Rodrigo de Sá Cruz