Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andre Rosset

[Resolvido] Nomes de campos e tabelas case INsensitive

Recommended Posts

Pessoal, boa tarde!

Um cliente tem um software em java que trabalha com mysql e ele me pediu o seguinte:

 

Ao realizar uma consulta no MySQL, o comando SQL informado pelosistema não está considerando case sensitive. O que significa que a query podeser "SELECT * FROM TABELA WHERE COLUNA = 1" ou "select * fromtabela where coluna = 1" em diferentes telas do sistema.

 

O que está acontecendo é que, em determinadas telas, a query estáem maiúsculo no where (select * from tabela where COLUNA = 1), pois háconsultas dinâmicas, onde o "where" é construído em tempo de execução. Quando isto acontece, o MySQL reclama que não existe coluna com este nome,porém a coluna está lá, só que em minúsculo (coluna).

 

 

Precisamos que esta verificação não seja feita pelo MySQL, e queseja case insensitive para as colunas. Neste caso, se eu mudo a query para omesmo case do MySQL, passa a funcionar. Porém o sistema foi construído sem essaverfiicação pois, o MySQL anterior não tinha essa restrição.

 

Resumindo: Teria alguma opção no MySql para que não seja feita essa verificação de case sensitive?

Ou será que vou ter que dar uma má noticia pro cara? rs

 

Obrigado até o momento, abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Versão 5.1

 

:seta:

Enter password: **********************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 128913294
Server version: 5.1.57 Gentoo

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show tables ;
Empty set (0.06 sec)

mysql> create table teste (
   ->        COLUNA varchar ( 12 ) not null
   -> ) ;
Query OK, 0 rows affected (0.10 sec)

mysql> insert into teste ( coluna ) values ( 'a' ) , ( 'b' ) , ( 'c' );
Query OK, 3 rows affected (0.06 sec)
Registros: 3 - Duplicados: 0 - Avisos: 0

mysql> select * from teste where coluna in ( 'a' , 'b' ) ;
+--------+
| COLUNA |
+--------+
| a      |
| b      |
+--------+
2 rows in set (0.08 sec)

mysql>

Compartilhar este post


Link para o post
Compartilhar em outros sites

:seta:

Enter password: **********************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 128913294
Server version: 5.1.57 Gentoo

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show tables ;
Empty set (0.06 sec)

mysql> create table teste (
   ->        COLUNA varchar ( 12 ) not null
   -> ) ;
Query OK, 0 rows affected (0.10 sec)

mysql> insert into teste ( coluna ) values ( 'a' ) , ( 'b' ) , ( 'c' );
Query OK, 3 rows affected (0.06 sec)
Registros: 3 - Duplicados: 0 - Avisos: 0

mysql> select * from teste where coluna in ( 'a' , 'b' ) ;
+--------+
| COLUNA |
+--------+
| a      |
| b      |
+--------+
2 rows in set (0.08 sec)

mysql>

 

Muito obrigado Andrey! Bom dia!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na hora de escolher o collation da sua tabela ou banco, você pode pegar os que tem ao final "_ci" (exemplo: utf8_general_ci) que indica que as consultas serão consideradas "case insensitive".

 

http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

 

http://ajuda.uolhost.com.br/index.php?p=resposta&res=891#rmcl

 

http://www.google.com.br/search?hl=pt-BR&source=hp&q=mysql+collation&meta=&aq=f&oq=#sclient=psy-ab&hl=pt-BR&source=hp&q=mysql%20collation%20case%20insensitive&pbx=1&oq=&aq=&aqi=&aql=&gs_sm=&gs_upl=&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=3e9fb4d88820a571&biw=1440&bih=799&pf=p&pdl=500

 

Isso vale pra valores, não sei se vale pra nomes de campos ou nomes de tabelas.

Testa aí e diz pra gente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.