MySQL 8.4
CHAR(num[, ...] [USING charset])- [ ]необязательная часть
- ...можно повторить
- num
- Код байта; число больше 255 даёт несколько байтовINT
- USING charset
- Прочитать байты как строку в указанной кодировке; без USING — двоичная строкаНеобязательный
- charset
- Кодировка, например utf8mb4Ключевое словоarmscii8asciibig5binarycp1250cp1251cp1256cp1257cp850cp852cp866cp932dec8eucjpmseuckrgb18030gb2312gbkgeostd8greekhebrewhp8keybcs2koi8rkoi8ulatin1latin2latin5latin7maccemacromansjisswe7tis620ucs2ujisutf16utf16leutf32utf8mb3utf8mb4
Возвращаемое значение
Двоичная строка из байтов с указанными кодами, с USING — строка в этой кодировке; аргументы NULL пропускаются
Примеры
Строка из кодов символов
MySQL 8.4
SELECT CHAR(72, 105);Пропуск NULL среди кодов
MySQL 8.4
SELECT CHAR(83, NULL, 81, 76);Буква кириллицы из байтов UTF-8
MySQL 8.4
SELECT CHAR(208, 191 USING utf8mb4) AS letter;LOWER не меняет двоичную строку
MySQL 8.4
SELECT LOWER(CHAR(72, 105)) AS binary_string,
LOWER(CHAR(72, 105 USING utf8mb4)) AS text_string;Подробности
Без USING результат — двоичная строка (CHARSET(CHAR(72)) вернёт binary): сравнение с ней идёт побайтово, с учётом регистра, а LOWER и UPPER её не меняют. Чтобы получить обычный текст, укажите кодировку: CHAR(72, 105 USING utf8mb4).
Для латиницы, цифр и знаков препинания код совпадает с кодом ASCII, например 65 — это A. Каждый код задаёт байт, а не символ: буква кириллицы в utf8mb4 занимает два байта, поэтому «п» — это CHAR(208, 191 USING utf8mb4). Код больше 255 записывается несколькими байтами: CHAR(256) равно CHAR(1, 0).