sql >> Database >  >> RDS >> Mysql

Regex capture-groepen simuleren in mysql

Na wat vallen en opstaan ​​kwam ik met de volgende query die doet wat ik nodig heb. In principe scheid ik cijfers van het einde van de reeks en verwijder dan dat aantal tekens voordat ik het volgende nummer scheid. De kolom versie 1 is beperkt tot positieve getallen van 2 cijfers, maar dat is een beperking waar ik in mijn geval mee kan leven.

SELECT
    IF(CAST(RIGHT(SUBSTRING_INDEX(LEFT(version,CHAR_LENGTH(version) - CHAR_LENGTH(SUBSTRING_INDEX(version, '.', -3)) - 1), '.', -1),2) AS DECIMAL) > 0, 
        CAST(RIGHT(SUBSTRING_INDEX(LEFT(version,CHAR_LENGTH(version) - CHAR_LENGTH(SUBSTRING_INDEX(version, '.', -3)) - 1), '.', -1),2) AS DECIMAL), 
        CAST(RIGHT(SUBSTRING_INDEX(LEFT(version,CHAR_LENGTH(version) - CHAR_LENGTH(SUBSTRING_INDEX(version, '.', -3)) - 1), '.', -1),1) AS DECIMAL)) AS version1,
    SUBSTRING_INDEX(LEFT(version,CHAR_LENGTH(version) - CHAR_LENGTH(SUBSTRING_INDEX(version, '.', -2)) - 1), '.', -1) as version2,
    SUBSTRING_INDEX(LEFT(version,CHAR_LENGTH(version) - CHAR_LENGTH(SUBSTRING_INDEX(version, '.', -1)) - 1), '.', -1) as version3,
    SUBSTRING_INDEX(version, '.', -1) as version4
FROM Version
HAVING version1 >= 5
;



  1. Hoe de niet-null-beperking in MySQL te verwijderen?

  2. Hoe jaar en maand uit de datum halen in PostgreSQL zonder de functie to_char() te gebruiken?

  3. Manieren om toegang te krijgen tot Oracle Database in PostgreSQL

  4. Controleer of een Postgres JSON-array een string bevat