Справочник по функциям

CHAR

Аналог в PostgreSQL:

Возвращает строку из байтов с указанными кодами.

MySQL 8.1
CHAR(num[, ...] [USING charset])

Параметры

numINT
Код байта; для латиницы, цифр и знаков препинания совпадает с кодом ASCII, например 65 для A
USING charsetключевое словонеобязательный
Кодировка, в которой читаются байты, например utf8mb4; без неё результат — двоичная строка

Возвращаемое значение

Двоичная строка из байтов с указанными кодами, с USING — строка в этой кодировке; аргументы NULL пропускаются

Примеры

Строка из кодов символов

MySQL 8.1
SELECT CHAR(72, 105);
CHAR(72, 105)
Hi

Пропуск NULL среди кодов

MySQL 8.1
SELECT CHAR(83, NULL, 81, 76);
CHAR(83, NULL, 81, 76)
SQL

Буква кириллицы из байтов UTF-8

MySQL 8.1
SELECT CHAR(208, 191 USING utf8mb4) AS letter;
letter
п

LOWER не меняет двоичную строку

MySQL 8.1
SELECT LOWER(CHAR(72, 105)) AS binary_string,
	LOWER(CHAR(72, 105 USING utf8mb4)) AS text_string;
binary_stringtext_string
Hihi

Подробности

Без USING результат — двоичная строка (CHARSET(CHAR(72)) вернёт binary): сравнение с ней идёт побайтово, с учётом регистра, а LOWER и UPPER её не меняют. Чтобы получить обычный текст, укажите кодировку: CHAR(72, 105 USING utf8mb4).

Каждый код задаёт байт, а не символ: буква кириллицы в utf8mb4 занимает два байта, поэтому «п» — это CHAR(208, 191 USING utf8mb4). Код больше 255 записывается несколькими байтами: CHAR(256) равно CHAR(1, 0).

Смотрите также