Как выбрать максимальное число из значения типа varchar - PullRequest
1 голос
/ 21 апреля 2019

У меня есть следующая таблица:

+-----------+------------+----------+------------+
| letter_no | year_index | auto_no  | date_stamp |
+-----------+------------+----------+------------+
|         1 |        100 | 2018-100 | 2018-12-30 |
|         2 |        101 | 2018-101 | 2018-12-30 |
|         3 |        102 | 2018-102 | 2018-12-31 |
|         4 |          1 | 2019-001 | 2019-01-01 |
|         5 |          2 | 2019-002 | 2019-01-01 |
|         6 |          3 | 2019-003 | 2019-01-02 |
+-----------+------------+----------+------------+

Третий столбец содержит автоматически сгенерированное число, состоящее из текущего года, дефис и затем номер индекса, начинающийся с 001. Auto no field is varchar().

Итак.Мне нужно выбрать только число (без года, дефиса или нулей) из автоматического номера, такого как 100, 101, 102, 1, 2 и 3 и т. Д.

Я использовал следующий запрос, чтобы получить желаемый результат

SELECT max (приведение (подстрока ('auto_no', 2) как подпись)) из буквы.

Но я не уверен, что значение (2), помещенное в запрос, не былополучить желаемый результат.Кто-нибудь может мне помочь?

Ответы [ 2 ]

4 голосов
/ 21 апреля 2019

Используйте substring_index() и неявное преобразование. Например:

select max(substring_index(auto_no, '-', -1) + 0)
from letter;
0 голосов
/ 21 апреля 2019

Вы можете попробовать этот запрос, используя substring_index и trim, чтобы удалить начальные нули:

select trim(leading '0' from
            substring_index(auto_no, '-', -1))
from tbl

Демо

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