これも一致します:
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.
何を達成しようとしているのかわかりませんが、16進文字が必要な場合は、16進関数を使用できます。
SELECT HEX('a')
61