sql >> Databáze >  >> RDS >> Mysql

Simulace skupin zachycení regulárních výrazů v mysql

Po nějakém pokusu a omylu jsem přišel s následujícím dotazem, který dělá to, co potřebuji. V zásadě odděluji čísla od konce řetězce a poté odstraním tolik znaků, než oddělím další číslo. Sloupec verze1 je omezen na kladná 2místná čísla, ale to je omezení, se kterým mohu v mém případě žít.

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. Nejjednodušší způsob, jak přidat více mezer do řetězce v MySQL – SPACE()

  2. Změna pole Enum pomocí Alembic

  3. Jak vytvořit uživatele pouze pro čtení v PostgreSQL

  4. Převeďte formát data na formát DD/MMM/RRRR na serveru SQL