junaooaks 3 Denunciar post Postado Julho 9, 2009 pessoal to precisando de uma consulta que nao diferencie maiusculo com minusculo ou acentos se fizer uma perquisa com Maria eu quero que retorne todas maria Maria MARIA indiferente de maiusculo ou minusculo li que ate a versao 4.0 nao tinha este problema poderia me mostrar. SELECT * FROM tabela WHERE campo = maria Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Julho 11, 2009 com o uso do like ja resolve isso Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Julho 11, 2009 o mysql eh tao cs quanto osistema q ele roda Compartilhar este post Link para o post Compartilhar em outros sites
_Felix 0 Denunciar post Postado Julho 11, 2009 Mas não case sensitive ou seja: SELECT * FROM tabela WHERE campo = 'maria'; ou SELECT * FROM tabela WHERE campo like 'maria'; o resultado será: maria Maria MARIA http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Julho 11, 2009 verifique qual collation e charset está usando os collations com final "_cs" e "_ci" deve estar com "_ci" (Case Insensitive) Compartilhar este post Link para o post Compartilhar em outros sites
Wagner Bianchi 0 Denunciar post Postado Julho 13, 2009 Vamos à lição: http://forum.imasters.com.br/public/style_emoticons/default/graduated.gif mysql> CREATE TABLE nomes ( -> id int unsigned not null auto_increment primary key, -> nome char(80) not null collate latin1_bin -> ); Query OK, 0 rows affected (0.05 sec) mysql> INSERT INTO nomes SET nome ='Maria'; Query OK, 1 row affected (0.02 sec) mysql> INSERT INTO nomes SET nome ='maria'; Query OK, 1 row affected (0.09 sec) mysql> SELECT id, nome FROM nomes WHERE nome ='maria'; +----+-------+ | id | nome | +----+-------+ | 2 | maria | +----+-------+ 1 row in set (0.00 sec) mysql> SELECT id, nome FROM nomes WHERE nome ='Maria'; +----+-------+ | id | nome | +----+-------+ | 1 | Maria | +----+-------+ 1 row in set (0.00 sec) Como o CHARACTER SET, ou conjunto de caracteres latin1 não tem a variação cs para tornar as informações de tabelas CASE SENSITIVE... mysql> SHOW CHARACTER SET LIKE 'latin%'; +---------+-----------------------------+-------------------+--------+ | Charset | Description | Default collation | Maxlen | +---------+-----------------------------+-------------------+--------+ | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | +---------+-----------------------------+-------------------+--------+ 4 rows in set (0.00 sec) ...teremos que utilizar o COLLATE do conjunto de caracteres para tornar a coluna latin1_bin: mysql> SHOW COLLATION LIKE 'latin1_bin'; +------------+---------+----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +------------+---------+----+---------+----------+---------+ | latin1_bin | latin1 | 47 | | Yes | 1 | +------------+---------+----+---------+----------+---------+ 1 row in set (0.00 sec) Interessante saber que, mesmo tornando o conteúdo da coluna binário, seus valores ainda são dependentes do conjunto de caracteres que ainda faz as comparações caracter a caracter, e não byte-a-byte, como em tipos de dados binários (BINARY, VARBINARY e BLOB). Happy MySQL'ing!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
miromalc 1 Denunciar post Postado Agosto 29, 2009 Vamos à lição: http://forum.imasters.com.br/public/style_emoticons/default/graduated.gif mysql> CREATE TABLE nomes ( -> id int unsigned not null auto_increment primary key, -> nome char(80) not null collate latin1_bin -> ); Query OK, 0 rows affected (0.05 sec) mysql> INSERT INTO nomes SET nome ='Maria'; Query OK, 1 row affected (0.02 sec) mysql> INSERT INTO nomes SET nome ='maria'; Query OK, 1 row affected (0.09 sec) mysql> SELECT id, nome FROM nomes WHERE nome ='maria'; +----+-------+ | id | nome | +----+-------+ | 2 | maria | +----+-------+ 1 row in set (0.00 sec) mysql> SELECT id, nome FROM nomes WHERE nome ='Maria'; +----+-------+ | id | nome | +----+-------+ | 1 | Maria | +----+-------+ 1 row in set (0.00 sec) Como o CHARACTER SET, ou conjunto de caracteres latin1 não tem a variação cs para tornar as informações de tabelas CASE SENSITIVE... mysql> SHOW CHARACTER SET LIKE 'latin%'; +---------+-----------------------------+-------------------+--------+ | Charset | Description | Default collation | Maxlen | +---------+-----------------------------+-------------------+--------+ | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | +---------+-----------------------------+-------------------+--------+ 4 rows in set (0.00 sec) ...teremos que utilizar o COLLATE do conjunto de caracteres para tornar a coluna latin1_bin: mysql> SHOW COLLATION LIKE 'latin1_bin'; +------------+---------+----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +------------+---------+----+---------+----------+---------+ | latin1_bin | latin1 | 47 | | Yes | 1 | +------------+---------+----+---------+----------+---------+ 1 row in set (0.00 sec) Interessante saber que, mesmo tornando o conteúdo da coluna binário, seus valores ainda são dependentes do conjunto de caracteres que ainda faz as comparações caracter a caracter, e não byte-a-byte, como em tipos de dados binários (BINARY, VARBINARY e BLOB). Happy MySQL'ing!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Resolvi meu problema, obrigado pela aula. Compartilhar este post Link para o post Compartilhar em outros sites