Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Unicode-Zeichenliterale (hexadezimal) in MySQL

Sie können hexadezimale Literale angeben (oder sogar binäre Literale ) mit 0x , x'' , oder X'' :

select  0xC2A2;
select x'C2A2';
select X'C2A2';

Aber achten Sie darauf dass der Rückgabetyp eine binäre Zeichenfolge ist, sodass jedes einzelne Byte als Zeichen betrachtet wird. Sie können dies mit char_length überprüfen :

select char_length(0xC2A2)

Wenn Sie möchten UTF-8 Zeichenfolgen müssen Sie stattdessen convert :

select convert(0xC2A2 using utf8mb4)

Und wir können diesen C2 A2 sehen wird in UTF-8 als 1 Zeichen betrachtet:

select char_length(convert(0xC2A2 using utf8mb4))

Außerdem müssen Sie sich wegen convert keine Gedanken über ungültige Bytes machen wird sie automatisch entfernen:

select char_length(convert(0xC1A2 using utf8mb4))

Wie man sieht, ist die Ausgabe 0 weil C1 A2 ist eine ungültige UTF-8-Bytesequenz.