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