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.