Ini juga cocok:
SELECT CONVERT('a' USING BINARY) REGEXP '[1-\x]'
Alasannya adalah karena \x
ditafsirkan sebagai x
dan a
berada di antara 1
dan x
. Regex Anda yang lain hanyalah karakter biasa yang tidak relevan di sini karena sudah berada dalam rentang [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.
Saya tidak yakin apa yang ingin Anda capai, tetapi jika Anda menginginkan karakter hex, Anda dapat menggunakan fungsi hex:
SELECT HEX('a')
61