我有一个整数,如0000000001,0000000002,有时xxxxxxxxxx在varchar类型长度10中。我需要得到一个最大(列)+1或0000000002,以便跟随0000000003.但现在因为它内部的xxxxxxxxxx从0000000001开始再次。
SELECT max(ID)+1
将数字添加到不是数字的字符串时,它将返回该数字。
'foo'+ 42 = 42
因为你选择MAX(ID)
它会返回'xxxxxxxxxx'。
对此最简单的解决方法是调整计算一点点。
SELECT max(ID+1) from yourtable
因为这样,从'xxxxxxxxxx'+ 1返回的1将不是MAX。
或者选择那些高于0的那些。
select LPAD(MAX(ID)+1, 10, '0')
from yourtable
where id > 0