从具有0填充的MySQL数据库列中选择最高编号?

时间:2014-03-16 04:59:37

标签: php mysql sql

我需要从MySQL数据库列中选择最高的数字,如果需要,可以在前面填充0。

数字从000001开始,随着记录集的增长,数字越来越高。

现在我们有大约14个xxx记录,当我运行这个SQL时......

SELECT MAX( designnumber_c ) 
FROM d1_designs_cstm
LIMIT 1

结果是值为009999的记录,因此下一个数字和向上数字不会被识别为最高数字。

如何确保返回最高值?如果重要,那么该列不是INT,而是VARCHAR之前就是这样的。

请帮帮忙?

4 个答案:

答案 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

希望这有帮助。