Vous pouvez spécifier littéraux hexadécimaux
(ou même littéraux binaires
) en utilisant 0x
, x''
, ou X''
:
select 0xC2A2;
select x'C2A2';
select X'C2A2';
Mais soyez conscient que le type de retour est une chaîne binaire, donc chaque octet est considéré comme un caractère. Vous pouvez le vérifier avec char_length
:
select char_length(0xC2A2)
Si vous voulez UTF-8
à la place, vous devez utiliser convert
:
select convert(0xC2A2 using utf8mb4)
Et nous pouvons voir que C2 A2
est considéré comme 1 caractère en UTF-8 :
select char_length(convert(0xC2A2 using utf8mb4))
De plus, vous n'avez pas à vous soucier des octets invalides car convert
les supprimera automatiquement :
select char_length(convert(0xC1A2 using utf8mb4))
Comme on peut le voir, la sortie est 0
car C1 A2
est une séquence d'octets UTF-8 non valide.