Ir para conteúdo

POWERED BY:

Arquivado

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

M4n0w4r

[Resolvido] Consultas de strings formatadas em UTF-8

Recommended Posts

Olá a todos :)

 

Criei em um editor de texto formatado para trabalhar UTF-8 o seguinte banco de dados também em UTF-8

create database BD default character set utf8 collate utf8_unicode_ci;

use BD;

create table alimentos (
	alimento_id integer not null,
	nome varchar (30) not null,
	
	constraint pk_alimento primary key (alimento_id)
);

insert into alimentos (alimento_id, nome) values (1, 'Pequi');
insert into alimentos (alimento_id, nome) values (2, 'Pêssego');

A maioria de minhas variáveis estão em UTF-8, somente "character_set_server" e "collation_server" eu não consegui mudar :huh:

collation_connection utf8_general_ci

collation_database utf8_general_ci

collation_server latin1_swedish_ci

character_set_client utf8

character_set_connection utf8

character_set_database utf8

character_set_filesystem binary

character_set_results utf8

character_set_server latin1

character_set_system utf8

character_sets_dir c:\wamp\bin\mysql\mysql5.1.36\share\charsets\

Minha dúvida é, porque quando eu executo essa consulta

SELECT nome FROM alimentos WHERE nome LIKE 'pe%'
Ela me retorna "Pêssego" sendo que eu quero retornar somente os alimentos que começam por "pe" e que não possuem acento circunflexo :(

 

Agradeço muito quem puder ajudar. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, quebrei a cabeca com isso e não achei a solução iuahiuah

 

Se conseguir posta aqui pra gente

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos novamente, estou revivendo o tópico pois encontrou uma solução que gostaria de compartilhar.

 

Para fazer consultas case sensitive e accent sensitive é so converter o campo desejado para binário

 

SELECT nome FROM alimentos WHERE binary nome LIKE 'pe%'

Não sei as desvantagens desse método, so sei que funciona e está sendo minha única saída.

 

Se olhar no site oficial "http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html" da para ver a seguinte solução:

 

LIKE 'a%' COLLATE latin1_general_cs

No meu caso ficaria assim
	SELECT nome FROM alimentos WHERE nome LIKE 'pe%' COLLATE utf8_unicode_ci

Infelizmente esse método não funcionou para mim, alguem teria alguma solução ?

 

Vlwwwwwwwwww, flwwwwwwwwwwwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade seria

 

 

SELECT nome FROM alimentos WHERE nome LIKE 'pe%' COLLATE utf8_unicode_cs

 

 

ci -> case insensitive

cs -> case sensitive

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, voltando mais uma vez :)

 

So para deixar claro que não existe "utf8_unicode_cs" no mysql, em compensação existe o "utf8_bin" que resolve o problema :)

 

Vlwwwm, flowwwwwwwwwwwww

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.