Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Mão na Massa - Programação Shell

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

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

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.02/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (807 votos)

Opinião dos Leitores

Walter Cruz
18 Fev 2009, 14:46
No MySQL, é posssível usar o collation utf8_general_ci (case insensitive) ou latin1_general_ci - não lembro ao certo, mas dá uma olhada tem os que terminam com cs e os que terminam com ci, que são respectivamente case sensitive e case insensitive. Dá pra mudar o collation por tabela, até mesmo coluna. No PostgreSQL 8.4 (ou 8.5, não sei como anda o andamento das coisas) vai entrar um tipo novo chamado CITEXT, mas atualmente não penso ter outra forma de fazer isso que não no SQL, mas se vc puder perguntar lá na postgresql-br, pode ser que alguém lá tenha informações melhores
Marcio Rosa
18 Fev 2009, 14:35
Walter,

como resolver esse problema sem ter que alterar o select? Teria como colocar algum comando na conexao para que ele sempre use o colation especico? Ou melhor, alguma configuração no BD para que ele sempre utilize o calation específico?
Agradeço desde de já.
Bl4De
17 Nov 2008, 14:33
Claro que funcionou Alex...
Qual o seu problema?
Alex
06 Jul 2007, 17:28
Nao funcionou
Walter Cruz
02 Jan 2007, 14:27
Oi Fernando

Eu escrevi essa dica há algum tempo atrás. Nem sabia que tinha sido publicada :) . Quando ao lance dos indíces, você está corretíssimo!
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

English for Reading and Listening
Enriqueça o seu vocabulário recebendo diariamente mensagens divertidas em inglês, com áudio em MP3.
Saiba mais

Biblioteca

Desenvolvendo Websites com PHP
Por Juliano Niederauer

O Monge e o Executivo: uma História sobre a Essência da Liderança
Por James C. Hunter

Extreme Programming
Por Vinicius Manhaes Teles

UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson

O Vendedor de Sonhos
Por Augusto Cury

Segurança de Redes em Ambientes Cooperativos
Por Emilio Tissato Nakamura e Paulo Licio de Geus

O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti

Utilizando UML e Padrões
Por CRAIG LARMAN

Sistema de Banco de Dados
Por Abraham Silberschatz

Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto

Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder

Redes de Computadores e a Internet
Por James F. Kurose e Keith W. Ross

O Segredo
Por Rhonda Byrne

Os Segredos da Mente Milionária
Por T. Harv Eker

Construindo Sites com CSS e (X)HTML
Por Mauricio Samy Silva

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

Expressões Regulares: Uma Abordagem Divertida
Por Aurélio Marinho Jargas

Qualidade de Software
Por Andre Koscianski Michel dos Santos Soares

Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho

Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson