Mysql
 sql >> Base de données >  >> RDS >> Mysql

Caractères hexadécimaux dans la correspondance d'expression régulière dans mysql

Cela correspond aussi :

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

La raison est que \x est interprété comme x et a vient entre 1 et x . Le reste de votre regex n'est constitué que de caractères ordinaires qui ne sont pas pertinents ici car ils se trouvent déjà dans la plage [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.

Je ne suis pas sûr de ce que vous essayez d'obtenir, mais si vous voulez des caractères hexadécimaux, vous pouvez utiliser la fonction hexadécimale :

SELECT HEX('a')
61