MySQL has many operators and functions that return a string. This section answers the question: What is the character set and collation of such a string?
For simple functions that take a string input and return a
string result as output, the output's character set and collation are the
same as the principal input's. For example, UPPER(X) returns a
string whose character string and collation are the same as that of X.
The same applies for:
INSTR(),
LCASE(),
LOWER(),
LTRIM(),
MID(),
REPEAT(),
REPLACE(),
REVERSE(),
RIGHT(),
RPAD(),
RTRIM(),
SOUNDEX(),
SUBSTRING(),
TRIM(),
UCASE(),
UPPER().
For operations that combine multiple string inputs and return a single string output, SQL-99's ``aggregation rules'' apply. They are:
COLLATE X occurs, then use X
COLLATE X and COLLATE Y occur, then error
X, then use X
For example, with CASE ... WHEN a THEN b WHEN b THEN c COLLATE X
END, the resultant collation is X. The same applies for:
CONCAT(),
GREATEST(),
IF(),
LEAST(),
CASE,
UNION,
||,
ELT().
For operations that convert to character data, the result
string's character set and collation are in the connection/literals
character set and have the connection/literals collation.
This applies for:
CHAR(),
CAST(),
CONV(),
FORMAT().
HEX(),
SPACE().