CHAR(num[, ...] [USING charset])- [ ]optionaler Teil
- ...kann wiederholt werden
- num
- Bytewert; eine Zahl größer als 255 ergibt mehrere BytesINT
- USING charset
- Bytes als String im angegebenen Zeichensatz lesen; ohne USING ein binärer StringOptional
- charset
- Zeichensatz, zum Beispiel utf8mb4Schlüsselwortarmscii8asciibig5binarycp1250cp1251cp1256cp1257cp850cp852cp866cp932dec8eucjpmseuckrgb18030gb2312gbkgeostd8greekhebrewhp8keybcs2koi8rkoi8ulatin1latin2latin5latin7maccemacromansjisswe7tis620ucs2ujisutf16utf16leutf32utf8mb3utf8mb4
Rückgabewert
Binärer String aus den Bytes der angegebenen Codes, bei USING ein String in diesem Zeichensatz; NULL-Argumente werden übersprungen
Beispiele
String aus Zeichencodes
SELECT CHAR(72, 105);NULL unter den Codes überspringen
SELECT CHAR(83, NULL, 81, 76);Kyrillischer Buchstabe aus UTF-8-Bytes
SELECT CHAR(208, 191 USING utf8mb4) AS letter;LOWER ändert einen binären String nicht
SELECT LOWER(CHAR(72, 105)) AS binary_string,
LOWER(CHAR(72, 105 USING utf8mb4)) AS text_string;Details
Ohne USING ist das Ergebnis ein binärer String (CHARSET(CHAR(72)) gibt binary zurück): Vergleiche damit laufen Byte für Byte und beachten Groß- und Kleinschreibung, und LOWER und UPPER ändern ihn nicht. Für normalen Text gib einen Zeichensatz an: CHAR(72, 105 USING utf8mb4).
Bei lateinischen Buchstaben, Ziffern und Satzzeichen stimmt der Code mit dem ASCII-Code überein, zum Beispiel ist 65 ein A. Jeder Code legt ein Byte fest, kein Zeichen: Ein kyrillischer Buchstabe belegt in utf8mb4 zwei Bytes, daher ist «п» CHAR(208, 191 USING utf8mb4). Ein Code größer als 255 wird mit mehreren Bytes geschrieben: CHAR(256) entspricht CHAR(1, 0).