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