Strings de Resultados no MySql

O MySQL tem muitos operadores e funções que retornam um string. Esta seção responde a questão: Qual é o conjunto de caracteres e collation de um certa string?

Para funções simples que pegam uma string de entrada e retornam uma string de resultado como saída, a saída do conjunto de caracteres e collation são as mesmas da entrada principal. Por exemplo, UPPER(X) retorna uma string cuja string de caracter e collation são os mesmo de X. O mesmo se aplica a: INSTR(), LCASE(), LOWER(), LTRIM(), MID(), REPEAT(), REPLACE(), REVERSE(), RIGHT(), RPAD(), RTRIM(), SOUNDEX(), SUBSTRING(), TRIM(), UCASE(), UPPER(). (Note também: a função REPLACE(), diferente de todas as outras funções, ignora a collation da string de entrada e realiza uma comparação de caso-insensitivo todas as vezes.)

Para operações que combinam múltiplas entradas de string e retornam uma única saída de string, As ``regras de agregamento'' do SQL-99 se aplicam. Eles são:

  • Se ocorrer um COLLATE X explicito, então use X

  • Se ocorrerem COLLATE X e COLLATE Y explicitos, então erro

  • Senão, se todas as collations são X, então use X

  • Senão, o resultado não possui collation

Por exemplo, com CASE ... WHEN a THEN b WHEN b THEN c COLLATE X END, a collation resultante é X. O mesmo se aplica a: CONCAT(), GREATEST(), IF(), LEAST(), CASE, UNION, ||, ELT().

Para operações que convertem para dados de caracteres, o resultado do conjunto de caracteres e collation da string estão no connection/literals character set e possuem a connection/literals collation. Isto se aplica a: CHAR(), CAST(), CONV(), FORMAT(). HEX(), SPACE().

Extraido do Manual de Referência do MySQL 4.1