sql >> Base de Datos >  >> RDS >> Mysql

Caracteres hexadecimales en la coincidencia de expresiones regulares en mysql

Esto también coincide:

SELECT CONVERT('a' USING BINARY) REGEXP '[1-\x]'

La razón es que \x se interpreta como x y a viene entre 1 y x . El resto de su expresión regular son solo caracteres ordinarios que no son relevantes aquí porque ya están dentro del rango [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.

No estoy seguro de lo que está tratando de lograr, pero si quiere caracteres hexadecimales, puede usar la función hexadecimal:

SELECT HEX('a')
61