Dit komt ook overeen:
SELECT CONVERT('a' USING BINARY) REGEXP '[1-\x]'
De reden is dat \x
wordt geïnterpreteerd als x
en a
komt tussen 1
en x
. De rest van je regex zijn gewone tekens die hier niet relevant zijn omdat ze al binnen het bereik van [1-x] vallen.
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.
Ik weet niet zeker wat je probeert te bereiken, maar als je hex-tekens wilt, kun je de hex-functie gebruiken:
SELECT HEX('a')
61