Извлечение строк версии упорядоченным образом из таблицы - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть таблица, в которой версия упоминается как столбец.Информация о версии будет выглядеть следующим образом.

версия:

11.1R1.8
11.1R1.80
11.1R1.9
11.1R1.1
11.1R1.10
11.1R1.2

Мне нужно написать запрос, чтобы получить его упорядоченным образом.Я попытался использовать команду like, как показано ниже, но она выбирается в том же порядке, что и выше.

select * from <table> where version like("11.1R1%");

Любые входные данные для этого могут быть полезны.Точное требование заключается в получении самой последней версии, если в качестве входных данных указана подстрока 11.1R1.

1 Ответ

0 голосов
/ 01 апреля 2019

Для вашего конкретного примера:

select *
from <table>
where version like('11.1R1%')
order by substring_index(version, '.', -1) + 0 desc
limit 1;

where гарантирует, что часть до R и основная версия после совпадают.

Вы также можете выразить этоas:

order by length(version) desc, version desc

Это не преобразует компоненты версии в число.Еще раз, это работает в вашем случае, потому что предложение where гарантирует, что начальные символы совпадают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...