sql >> Database >  >> RDS >> Mysql

Hex-tekens in regexp-overeenkomsten in mysql

Dit komt ook overeen:

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

De reden is dat \x wordt geïnterpreteerd als x en a komt tussen 1 en x . De rest van je regex zijn gewone tekens die hier niet relevant zijn omdat ze al binnen het bereik van [1-x] vallen.

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.

Ik weet niet zeker wat je probeert te bereiken, maar als je hex-tekens wilt, kun je de hex-functie gebruiken:

SELECT HEX('a')
61


  1. Postgres is de coolste database – Reden #1:Ontwikkelaars zijn er dol op!

  2. Wat is bij het uitvoeren van een opgeslagen procedure het voordeel van het gebruik van CommandType.StoredProcedure versus het gebruik van CommandType.Text?

  3. Hoe voorkom ik dat een databasetrigger terugkeert?

  4. Cast int naar varchar