sql >> Database teknologi >  >> RDS >> Mysql

Simulering af regex-fangstgrupper i mysql

Efter nogle forsøg og fejl kom jeg op med følgende forespørgsel, der gør, hvad jeg har brug for. Grundlæggende adskiller jeg tal fra enden af ​​strengen og fjerner så mange tegn, før jeg adskiller det næste tal. Kolonnen version1 er begrænset til positive 2-cifrede tal, men det er en begrænsning, som jeg kan leve med i mit tilfælde.

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. Skift datatype for en kolonne til seriel

  2. Sådan returneres kun numeriske værdier i SQL Server

  3. Hvad er Spring Integration?

  4. mysql hierarki selvtilslut, hent alle underkategorier