найти max в mysql, когда столбец varchar - PullRequest
2 голосов
/ 14 сентября 2009

У меня есть столбец varchar с такими данными

top<somenumber>

поэтому за словом «сверху» следуют цифры. Я пытаюсь вставить запись в эту таблицу и пытаюсь выяснить, какое значение следует ввести следующим образом.

Можно ли в любом случае найти максимальное значение для этого столбца?

может как то так?

select * from catalog ORDER BY CAST(`catalogid` AS DECIMAL(10,2)) DESC limit1;

как я могу сформировать вышеупомянутый запрос, чтобы учесть только числа, за которыми следует 'top'

Ответы [ 2 ]

3 голосов
/ 14 сентября 2009

Ну, в общем, вы можете использовать max:

select
    max(catalogid)
from
    catalog

Однако здесь у нас есть небольшая забавная проблема, в которой нам нужно удалить top:

select
    max(cast(substring(catalogid, 4) as decimal(10,2))) as maxid
from
    catalog

Видите ли, здесь мы используем substring, чтобы ограничить поле catalogid только числом.

Также вы можете проверить агрегатные функции , так как они могут быть очень полезны!

2 голосов
/ 14 сентября 2009

Если это всегда "top [N]", и вы хотите максимум N, вы можете попробовать:

SELECT MAX(CAST(SUBSTR(`catalogid`,4) AS DECIMAL(10,2)) ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...