我需要从MySQL数据库列中选择最高的数字,如果需要,可以在前面填充0。
数字从000001
开始,随着记录集的增长,数字越来越高。
现在我们有大约14个xxx记录,当我运行这个SQL时......
SELECT MAX( designnumber_c )
FROM d1_designs_cstm
LIMIT 1
结果是值为009999
的记录,因此下一个数字和向上数字不会被识别为最高数字。
如何确保返回最高值?如果重要,那么该列不是INT
,而是VARCHAR
之前就是这样的。
请帮帮忙?
答案 0 :(得分:1)
你先尝试打字吗?
SELECT d(强制转换(designnumber_c为无符号))来自d1_designs_cstm LIMIT 1
我刚做了一个快速测试和演员表(' 009999'作为无符号)返回了9999的数字表示,所以我认为它应该有效。
答案 1 :(得分:1)
临时解决方案:您可以在DESCENDING中订购结果,只选择一行。这可以通过以下方式完成:
SELECT designnumber_c FROM d1_designs_cstm
ORDER BY CAST(`designnumber_c` AS SIGNED) DESC LIMIT 1
但最好通过将designnumber_c
的数据类型更改为Integer来解决问题。
答案 2 :(得分:0)
SELECT MAX( changed_to_int )
FROM(
SELECT CAST(designnumber_c AS UNSIGNED) as changed_to_int
FROM d1_designs_cstm
) as t
不确定这会有多高效,但应该这样做
答案 3 :(得分:0)
这个页面可能会有所帮助。特别是如果你总是有6位数字。 Select the largest number from MYSQL Table with added Prefix
这确实有效,同时保留前导零。 SQL Fiddle
SELECT RIGHT(MAX(designnumber_c), 6) max_val
FROM d1_designs_cstm
LIMIT 1
希望这有帮助。