sql >> Databasteknik >  >> RDS >> Mysql

Hextecken i regexp-matchning i mysql

Detta matchar också:

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

Anledningen är att \x tolkas som x och a kommer mellan 1 och x . Resten av ditt regex är bara vanliga tecken som inte är relevanta här eftersom de redan är inom intervallet [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.

Jag är inte säker på vad du försöker uppnå, men om du vill ha hexadecken kan du använda hex-funktionen:

SELECT HEX('a')
61


  1. SQLite Self-Join

  2. Hur RIGHT() fungerar i MariaDB

  3. Infoga data i tabellen med php

  4. Mysql Time-typ ger ett ArgumentError:argument utanför intervallet i Rails om det är över 24 timmar