1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

mysql - SELECT DISTINCT + acentos nas palavras

Discussão em 'Programação' iniciada por cmancre, 27 de Dezembro de 2007. (Respostas: 2; Visualizações: 3113)

  1. Olá pessoal, estou de volta de uma base de dados e reparei num facto e queria confirmar com voces a seguinte situação. Quero confirmar se estou correcto ou se trata de má configuração do mysql.

    Exemplo: tenho uma base de dados com 3 linhas
    nome | idade | cidade
    --------------
    (Zé , 14 , Lisboa)
    (Ze , 15 , Porto)
    (Maria, 14 , Porto)

    Se eu fizer SELECT DISTINCT nome FROM tabela;
    O resultado é (Zé)
    (Maria)

    A minha pergunta é, o DISTINCT ignora acentos????
    O mesmo acontece com a seguinte query:

    SELECT nome, COUNT(nome) AS nn FROM tabela GROUP BY nome;
    resultado é (Zé, 2)
    (Maria, 1)


    Obrigado.
     
  2. kzip

    kzip Power Member

    Não conheço mysql, mas seguramente não é um problema do "distinct".

    Devido à "internacionalização" e à multiplicidade de linguagens e caracteres, as BD implementaram o conceito de "collation", que permite definir equivalências e precedências.

    Assim, cada um utiliza a "collation" que mais lhe interessa. Nuns casos interessa ser "case-insensitive", noutros "case-sensitive", num "accent-insentitive", etc,etc...

    No teu caso, se queres distinguir "Zé" de "Ze", então tens de procurar uma collation que seja "accent-sensitive".
    Ou a defines na própria estrutura de tabelas (ou base-de-dados), ou então forças nas instruções SQL.

    http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html
     
  3. Obrigado kzip, pois eu nao sou grande expert em db mas pensei logo que seria algo relacionado com charsets e "amigos". Já estou a ler o manual e estou encaminhado :)

    Obrigado
     

Partilhar esta Página