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

CHAR

Аналог в PostgreSQL:

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

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);
CHAR(72, 105)
Hi

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

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

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

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

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

MySQL 8.4
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).

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

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