In MySQL we can use the SHOW COLLATION
statement to return all collations supported by the server. By default it returns all available collations, but we can filter the output down to just those collations that we’re interested in.
Syntax
The syntax goes like this:
SHOW COLLATION
[LIKE 'pattern' | WHERE expr]
We can use the LIKE
clause and/or WHERE
clause to reduce the output to a subset of collations that we’re interested in.
Example
Here’s how to return all collations:
SHOW COLLATION;
Partial result:
+-----------------------------+----------+-----+---------+----------+---------+---------------+ | Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | +-----------------------------+----------+-----+---------+----------+---------+---------------+ | armscii8_bin | armscii8 | 64 | | Yes | 1 | PAD SPACE | | armscii8_general_ci | armscii8 | 32 | Yes | Yes | 1 | PAD SPACE | | ascii_bin | ascii | 65 | | Yes | 1 | PAD SPACE | | ascii_general_ci | ascii | 11 | Yes | Yes | 1 | PAD SPACE | ...
That’s a partial result because my system returns 286 rows, which is too many to list here.
The LIKE
Clause
We can use the LIKE
clause to filter the results to just those collations we’re interested in.
Example:
SHOW COLLATION LIKE 'euc%';
Result:
+---------------------+---------+----+---------+----------+---------+---------------+ | Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | +---------------------+---------+----+---------+----------+---------+---------------+ | eucjpms_bin | eucjpms | 98 | | Yes | 1 | PAD SPACE | | eucjpms_japanese_ci | eucjpms | 97 | Yes | Yes | 1 | PAD SPACE | | euckr_bin | euckr | 85 | | Yes | 1 | PAD SPACE | | euckr_korean_ci | euckr | 19 | Yes | Yes | 1 | PAD SPACE | +---------------------+---------+----+---------+----------+---------+---------------+
The WHERE
Clause
We can also use the WHERE
clause as another way to filter the results:
SHOW COLLATION WHERE Sortlen = 2;
Result:
+--------------------+---------+-----+---------+----------+---------+---------------+ | Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | +--------------------+---------+-----+---------+----------+---------+---------------+ | cp1250_czech_cs | cp1250 | 34 | | Yes | 2 | PAD SPACE | | gb18030_chinese_ci | gb18030 | 248 | Yes | Yes | 2 | PAD SPACE | | latin1_german2_ci | latin1 | 31 | | Yes | 2 | PAD SPACE | +--------------------+---------+-----+---------+----------+---------+---------------+
The AND
Keyword
We can also combine conditions with the AND
keyword:
SHOW COLLATION
WHERE Sortlen = 8
AND Collation LIKE 'gb%';
Result:
+------------------------+---------+-----+---------+----------+---------+---------------+ | Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | +------------------------+---------+-----+---------+----------+---------+---------------+ | gb18030_unicode_520_ci | gb18030 | 250 | | Yes | 8 | PAD SPACE | +------------------------+---------+-----+---------+----------+---------+---------------+
About the Default
Column
If we want to filter by the Default
column we need to surround it by backticks, due to Default
being a reserved word in MySQL:
SHOW COLLATION
WHERE Charset LIKE 'utf%'
AND `Default` = 'Yes';
Result:
+--------------------+---------+-----+---------+----------+---------+---------------+ | Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | +--------------------+---------+-----+---------+----------+---------+---------------+ | utf16le_general_ci | utf16le | 56 | Yes | Yes | 1 | PAD SPACE | | utf16_general_ci | utf16 | 54 | Yes | Yes | 1 | PAD SPACE | | utf32_general_ci | utf32 | 60 | Yes | Yes | 1 | PAD SPACE | | utf8mb3_general_ci | utf8mb3 | 33 | Yes | Yes | 1 | PAD SPACE | | utf8mb4_0900_ai_ci | utf8mb4 | 255 | Yes | Yes | 0 | NO PAD | +--------------------+---------+-----+---------+----------+---------+---------------+