Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Literały znakowe Unicode (szesnastkowe) w MySQL

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GDZIE pomylenie klauzuli z PDO

  2. System ocen w PHP i MySQL

  3. Kolejność MYSQL według sortowania rosnąco i malejąco

  4. #1062 – Zduplikowany wpis „” dla klucza „unique_id” podczas próby dodania UNIQUE KEY (MySQL)

  5. Błąd składni z emulacją tworzenia użytkownika, jeśli nie istnieje