Вы можете указать шестнадцатеричные литералы (или даже двоичные литералы ), используя 0x
, x''
или X''
:
select 0xC2A2;
select x'C2A2';
select X'C2A2';
Но помните , что возвращаемый тип - это двоичная строка, поэтому каждый байт считается символом.Вы можете проверить это с помощью char_length
:
select char_length(0xC2A2)
2
Если вы хотите вместо UTF-8 строк, вам нужноиспользовать convert
:
select convert(0xC2A2 using utf8mb4)
И мы можем видеть, что C2 A2
считается 1 символом в UTF-8:
select char_length(convert(0xC2A2 using utf8mb4))
1
Кроме того, вам не нужно беспокоиться о недействительных байтах, поскольку convert
удалит их автоматически:
select char_length(convert(0xC1A2 using utf8mb4))
0
Как видно, на выходе получается 0
, поскольку C1 A2
является недопустимой байтовой последовательностью UTF-8.