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

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

На теория можете да направите това:

  1. Намерете уникод диапазоните, за които искате да тествате.
  2. Ръчно кодирайте началото и края в UTF-8.
  3. Използвайте първия байт на всеки от кодираните начало и край като диапазон за REGEXP.

Вярвам, че диапазонът на CJK е достатъчно далеч от неща като символа на еврото, така че фалшивите положителни и фалшиво отрицателни резултати биха били малко или никакви.

Редактиране: Сега приложихме теорията на практика!

Стъпка 1: Изберете диапазона от знаци. Предлагам \u3000-\u9fff; лесен за тестване и трябва да ни даде почти перфектни резултати.

Стъпка 2: Кодирайте в байтове. (страница на Wikipedia utf-8)

За избрания от нас диапазон стойностите, кодирани в utf-8, винаги ще бъдат 3 байта, първият от които е 1110xxxx, където xxxx са най-значимите четири бита от стойността на unicode.

По този начин искаме да обработваме байтове в диапазона от 11100011 до 11101001 или от 0xe3 до 0xe9.

Стъпка 3: Направете нашия редовен израз с помощта на много удобната (и току-що открита от мен) функция UNHEX.

SELECT * FROM `mydata`
WHERE `words` REGEXP CONCAT('[',UNHEX('e3'),'-',UNHEX('e9'),']')

Току що го изпробвах. Работи като чар. :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да получите env променливи от docker в конфигурационен файл на symfony yml

  2. MySQL стойност по подразбиране като стойност на друго поле

  3. PDO lastInsertId не работи при транзакции?

  4. Грешка в MySQL:Сортирането е прекратено

  5. Как да избягам mysql в magento?