Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да търся по емоджи в MySQL, използвайки utf8mb4?

Използвате utf8mb4_unicode_ci за вашите колони, така че проверката не е чувствителна към главни букви. Ако използвате utf8mb4_bin вместо това емоджи 🌮 и 🌶 са правилно идентифицирани като различни букви.

С WEIGHT_STRING можете да получите стойностите, които се използват за сортиране и сравнение за входния низ.

Ако пишете:

SELECT
  WEIGHT_STRING ('🌮' COLLATE 'utf8mb4_unicode_ci'),
  WEIGHT_STRING ('🌶' COLLATE 'utf8mb4_unicode_ci')

Тогава можете да видите, че и двете са 0xfffd . В Набори от символи в Unicode те казват:

Ако пишете:

SELECT 
  WEIGHT_STRING('🌮' COLLATE 'utf8mb4_bin'),
  WEIGHT_STRING('🌶' COLLATE 'utf8mb4_bin')

Ще получите техните Unicode стойности 0x01f32e и 0x01f336 вместо това.

За други букви като Ä , Á и A които са равни, ако използвате utf8mb4_unicode_ci , разликата може да се види в:

SELECT
  WEIGHT_STRING ('Ä' COLLATE 'utf8mb4_unicode_ci'),
  WEIGHT_STRING ('A' COLLATE 'utf8mb4_unicode_ci')

Те се преобразуват в теглото 0x0E33

Ä: 00C4  ; [.0E33.0020.0008.0041][.0000.0047.0002.0308] # LATIN CAPITAL LETTER A WITH DIAERESIS; QQCM
A: 0041  ; [.0E33.0020.0008.0041] # LATIN CAPITAL LETTER A

Според:Разликата между utf8mb4_unicode_ci и utf8mb4_unicode_520_ci в MariaDB/MySQL? теглата, използвани за utf8mb4_unicode_ci са базирани на UCA 4.0.0 тъй като емоджитата не се показват там, картографираното тегло е 0xfffd

Ако имате нужда от сравнения и сортиране без значение на главни букви за обикновени букви заедно с емоджи, тогава този проблем се решава с помощта на utf8mb4_unicode_520_ci :

SELECT
  WEIGHT_STRING('🌮' COLLATE 'utf8mb4_unicode_520_ci'),
  WEIGHT_STRING('🌶' COLLATE 'utf8mb4_unicode_520_ci')

ще има и различни тегла за тези емоджи 0xfbc3f32e и 0xfbc3f336 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на съхранена процедура:настройка на набора от символи и сортиране

  2. Как да получите ER модел на база данни от сървър с Workbench

  3. Недостатъци на съхраняването на цяло число като низ в база данни

  4. Неуспешна работа за mysqld.service Вижте състоянието на systemctl mysqld.service

  5. Неправилна стойност на низа:„\xEF\xBF\xBD“ за колона