Mysql
 sql >> Database >  >> RDS >> Mysql

Caratteri esadecimali nella corrispondenza delle espressioni regolari in mysql

Anche questo corrisponde:

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

Il motivo è che \x viene interpretato come x e a è compreso tra 1 e x . Il resto della tua espressione regolare sono solo caratteri normali che non sono rilevanti qui perché sono già all'interno dell'intervallo [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.

Non sono sicuro di cosa stai cercando di ottenere, ma se vuoi caratteri esadecimali, puoi usare la funzione esadecimale:

SELECT HEX('a')
61