Това също съвпада:
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