Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Hex-Zeichen im Regexp-Matching in mysql

Das passt auch:

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

Der Grund ist, dass \x wird als x interpretiert und a kommt zwischen 1 und x . Der Rest Ihrer Regex sind nur gewöhnliche Zeichen, die hier nicht relevant sind, weil sie bereits im Bereich [1-x] liegen.

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.

Ich bin mir nicht sicher, was Sie erreichen wollen, aber wenn Sie Hex-Zeichen wollen, können Sie die Hex-Funktion verwenden:

SELECT HEX('a')
61