sql >> Databasteknik >  >> RDS >> Mysql

Simulerar regex-infångningsgrupper i mysql

Efter lite försök och fel kom jag på följande fråga som gör vad jag behöver. I princip separerar jag siffror från slutet av strängen och tar sedan bort så många tecken innan jag separerar nästa nummer. Kolumnen version1 är begränsad till positiva tvåsiffriga tal, men att det är en begränsning som jag kan leva med i mitt fall.

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. String -> java.util.Date -> java.sql.Date (med tidsstämpel)

  2. Normalisera transaktionsdata från tid- och statuskolumner till minuter per statusvärde

  3. Fel vid installation av Psychopg2 på MacOS 10.9.5

  4. LADDA DATAINFIL på fjärrmaskin