我需要从具有 varchar 列的表中检索 sql MAX 结果,例如“MYNAME-0xxxxx”或“MYNAME-xxxxx”(固定字符串后跟减号后跟以零开头的 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 之间的最大值是 12346。 请注意,数字是递增的,所以如果我们从 012347 开始,我们可以达到 999999
最佳答案
我还不能发表评论,所以我会在这里给出我的提示:
我认为问题在于您正在比较字符串。在这种情况下,SQL 查找字母顺序,1 高于 0,因此 string“0999”低于 string“1”。将其视为单词,单词“b”将排在单词“zaaa”之前。
将您要比较的字符串转换为数字,然后重试。
我希望我能解释一下。
关于mysql - 在sql表中查找最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57427281/