Możesz określić literale szesnastkowe
(lub nawet litery binarne
) przy użyciu 0x
, x''
lub X''
:
select 0xC2A2;
select x'C2A2';
select X'C2A2';
Ale uważaj że zwracany typ jest ciągiem binarnym, więc każdy bajt jest uważany za znak. Możesz to zweryfikować za pomocą char_length
:
select char_length(0xC2A2)
Jeśli chcesz UTF-8
zamiast tego należy użyć convert
:
select convert(0xC2A2 using utf8mb4)
I widzimy, że C2 A2
jest uważany za 1 znak w UTF-8:
select char_length(convert(0xC2A2 using utf8mb4))
Ponadto nie musisz się martwić o nieprawidłowe bajty, ponieważ konwertuje
usunie je automatycznie:
select char_length(convert(0xC1A2 using utf8mb4))
Jak widać, wynik to 0
ponieważ C1 A2
jest nieprawidłową sekwencją bajtów UTF-8.