Como Fazer Consulta Sql Diferenciar Maiúsculas e Minúsculas

Como Fazer Consulta Sql Diferenciar Maiúsculas e Minúsculas
4.49 (89.82%) 224 votes

Em primeiro, note que não sou um expert (gênio do Imalaia) no assunto, mas vou passar minha experiência neste assunto através deste artigo. A priori, dependendo do tipo de conferência de dados (collation), o Mysql já diferencia maiúscula e minúscula nas consultas.

Por exemplo, tabelas com collation latin1_general_cs irão diferenciar maiúsculas de minúsculas, enquanto que utf8_general_ci não irá diferenciar. Note que no final temos _CS e _CI que indica Case Sensitive (diferencia maiúsculas de minúsculas) e Case Insensitive (não faz diferenciação).

Se você está com um banco latin1_general_cs, poderá convertê-lo para latin1_general_ci, já para quem está usando utf8_general_ci, não existe um utf8_general_cs, então o jeito é ver as dicas a seguir.

Como Fazer Consulta Sql Diferenciar Maiúsculas e Minúsculas

Como utf8_general_ci não diferencia maiúsculas, para que a diferenciação ocorra, em tuas consultas sql, faça o seguinte:

SELECT * from tabela where 'coluna' COLLATE utf8_bin = 'Valor'

Você pode usar a dica acima para outras colações, veja:

nome_da_coluna COLLATE latin1_general_cs LIKE 'a%'
nome_da_coluna LIKE 'a%' COLLATE latin1_general_cs
nome_da_coluna COLLATE latin1_bin LIKE 'a%'
nome_da_coluna LIKE 'a%' COLLATE latin1_bin

Outra forma para montar o SQL seria:

select * from tabela where coluna like binary 'a'

Editar Arquivo de COnfiguração do Mysql

Quem possui acesso ao arquivo de configuração do servidor Mysql e a versão for igual ou superior a 5.5 pode editá-lo e definir o seguinte:

  character-set-server=utf8
  collation-server=utf8_bin

Caminho do arquivo de configuração, geralmente fica em: /etc/mysql/my.cnf. Após isto, reinicie o servidor Mysql.

Conclusão

Tenho usado as dicas acima mencionadas acima e tem resolvido meus problemas com consultas case sensitive e case insensitive. Caso você tenha uma visão diferente ou mesmo uma experiência sobre este assunto, compartilhe conosco, assim sendo todos nós iremos aprender mais, juntos.

Um abraço e até já!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *