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

Шестнадесетични знаци в съвпадение на регулярни изрази в mysql

Това също съвпада:

SELECT CONVERT('a' USING BINARY) REGEXP '[1-\x]'

Причината е, че \x се интерпетира като x и a идва между 1 и x . Останалата част от вашия регулярен израз са просто обикновени знаци, които не са подходящи тук, защото вече са в диапазона [1-x].

SELECT CONVERT('0' USING BINARY) REGEXP '[\x61-\x61]' -- Fails, because 0 < 1.
SELECT CONVERT('1' USING BINARY) REGEXP '[\x61-\x61]' -- Succeeds: inside [1-x].
SELECT CONVERT('2' USING BINARY) REGEXP '[\x61-\x61]' -- Succeeds: inside [1-x].
...
SELECT CONVERT('w' USING BINARY) REGEXP '[\x61-\x61]' -- Succeeds: inside [1-x].
SELECT CONVERT('x' USING BINARY) REGEXP '[\x61-\x61]' -- Succeeds: inside [1-x].
SELECT CONVERT('y' USING BINARY) REGEXP '[\x61-\x61]' -- Fails, because y > x.

Не съм сигурен какво се опитвате да постигнете, но ако искате шестнадесетични знаци, можете да използвате шестнадесетичната функция:

SELECT HEX('a')
61


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка с дублирана колона на MySQL само когато заявката е обвита като подзаявка

  2. Как да извикате MySQL съхранена процедура в Python

  3. Как да върна всички привилегии на root потребител в MySQL?

  4. Предаване на стойност, извлечена от база данни на друга страница с помощта на php и mysql

  5. Извеждане на множество заявки в една таблица