【发布时间】:2019-12-17 00:45:41
【问题描述】:
我需要从具有类似“MYNAME-0xxxxx”或“MYNAME-xxxxx”的 varchar 列的表中检索 sql MAX 结果(固定字符串后跟减号,后跟 6 位以零开头的数字或 5 位数字开头非零)
我试过这个:
SELECT MAX( substring( myColumn , locate('-', myColumn) ) )
FROM MyTable
使用此语句,我能够以这种形式“MYNAME-xxxx”实现所有列值的最大数量,但它不适用于“MYNAME-0xxxxx”等列
假设我们有
JOHN-12345
JOHN-12346
JOHN-012347
我希望我的结果是“012347”,但我的代码返回“12346”。在我看来,sql 中 12346 和 012347 之间的 MAX 值是 12346。 请注意,数字是递增的,所以如果我们从 012347 开始,我们可以达到 999999
【问题讨论】:
-
您使用的是哪个数据库?
-
对不起:mysql
-
您说一个固定字符串后跟一个减号,后跟 6 个以零开头的数字或 5 个以非零开头的数字,但您的示例数据只有 3 或 4 个数字.
-
位数无关紧要,问题仍然存在,但为了澄清,我将编辑我的帖子
-
正如下面@elserra 提到的,您需要将值转换为整数,这可能会有所帮助:stackoverflow.com/questions/5960620/…