【问题标题】:SQL mixed String with leading zerosSQL混合字符串与前导零
【发布时间】:2021-09-13 13:04:44
【问题描述】:

我想获取表格的最大值,然后将其与 +1 相加。这里的问题是列包含前导零并且列的长度不能大于4。

这里是一个例子:

表名:汽车

id
C001
C002
...
C009

我试图用这个 sql 查询来解决这个问题:

select concat(left(max(id),3),right(max(id),1)+1) as new from car;

结果:C0010 这个查询的问题是如果 C009 是最大的条目,查询应该返回 C010。但是,使用此查询,它会返回 C0010。

【问题讨论】:

  • 除以数字和字符模式。增加。使用 LPAD 来添加前导零。连接字符。
  • 使id 成为一个int,自动递增。然后在代码的表示层中添加C 并填充到任意长度。没有必要在列中做这件事并导致你自己和数据库额外的工作

标签: mysql sql mysql-workbench


【解决方案1】:
SELECT CONCAT(LEFT(id, 1), LPAD(SUBSTRING(id FROM 2) + 1, 3, '0')) AS new
FROM car

【讨论】:

  • 感谢您的解决方案。我没有明白一件事。是什么让id from 2 声明?
  • @KlausM。从从第二个字符开始的 id 值中提取子字符串。 dev.mysql.com/doc/refman/8.0/en/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 2011-04-09
  • 1970-01-01
相关资源
最近更新 更多