Sau một số thử nghiệm và sai sót, tôi đã đưa ra truy vấn sau đây để đáp ứng những gì tôi cần. Về cơ bản, tôi tách các số ra khỏi cuối chuỗi và sau đó loại bỏ nhiều ký tự đó trước khi tách số tiếp theo. Cột version1 được giới hạn ở các số dương có 2 chữ số, nhưng đó là hạn chế mà tôi có thể gặp phải trong trường hợp của mình.
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
;