Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Symulowanie grup przechwytywania wyrażeń regularnych w mysql

Po kilku próbach i błędach wymyśliłem następujące zapytanie, które robi to, czego potrzebuję. Zasadniczo oddzielam liczby od końca ciągu, a następnie usuwam tyle znaków, zanim oddzielę kolejną liczbę. Kolumna wersja 1 jest ograniczona do dodatnich liczb dwucyfrowych, ale jest to ograniczenie, z którym mogę żyć w moim przypadku.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybór pojedynczego wiersza w MySQL

  2. zapytanie mysql - formatowanie daty na wyjściu?

  3. Jak zachować ukośnik odwrotny podczas ucieczki od cudzysłowów w MySQL — QUOTE()

  4. Dlaczego sterownik QMYSQL nie jest załadowany w QT5.2?

  5. MySQL przy użyciu Sum i Case