【问题标题】:MySQL - max(column)+1 in a varchar only for integersMySQL - varchar 中的 max(column)+1 仅适用于整数
【发布时间】:2019-02-12 16:39:49
【问题描述】:

我有一列包含整数,例如 0000000001、0000000002,有时还有 varchar 类型长度为 10 的 xxxxxxxxxx。 我只需要得到一个 max(column)+1 或 0000000002 以便遵循 0000000003。 但是现在因为里面的 xxxxxxxxxx 又从 0000000001 开始了。

选择最大(ID)+1

【问题讨论】:

  • 你为什么使用'SELECT MAX(..) + 1..'听起来你实现了你自己的基于字符串的auto_increment?
  • 为什么不使用简单的自动增量和 zerofill 属性?
  • 因为它也是一个使用数据库的软件。这些使带有 xxxxxxxxx 值的事务查询正常 id 是整数增量。具有 zerofill 属性的自动增量会导致软件中的 xxxxxxxxx 插入出现问题

标签: mysql integer max varchar


【解决方案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

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    相关资源
    最近更新 更多