Toto odpovídá také:
SELECT CONVERT('a' USING BINARY) REGEXP '[1-\x]'
Důvodem je, že \x
je interpretováno jako x
a a
je mezi 1
a x
. Zbytek vašeho regulárního výrazu jsou jen obyčejné znaky, které zde nejsou relevantní, protože jsou již v rozsahu [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.
Nejsem si jistý, čeho se snažíte dosáhnout, ale pokud chcete hex znaky, můžete použít funkci hex:
SELECT HEX('a')
61