【问题标题】:MySQL - Add 0's to numbers with less than 9 digitsMySQL - 将 0 添加到少于 9 位的数字
【发布时间】:2015-08-19 15:37:56
【问题描述】:

我的数据库中有数千个条目,每个条目的长度不超过 9 位。我想做一个大规模更新,找到所有数字小于 9 的行并添加 0 以使它们等于 9 位。

例如,我的表格如下所示:

ID  |  Number  
---------------
0   |  489379
1   |  854744329
2   |  56456669

我想让它看起来像:

ID  |  Number  
---------------
0   |  000489379
1   |  854744329
2   |  056456669

我将如何使用 MySQL 查询来做到这一点?

【问题讨论】:

    标签: php mysql sql select


    【解决方案1】:

    lpad 函数应该可以解决您的问题:

    SELECT `id`, LPAD(`Number`, 9, '0')
    FROM   mytable
    

    要回答评论中的问题,这也可以应用在update 语句中:

    UPDATE mytable
    SET    `Number` = LPAD(`Number`, 9, '0')
    WHERE  LENGTH(`Number`) < 9
    

    【讨论】:

    • 哦,很棒的功能。我如何将其变成更新声明?
    • @steeped 编辑了我的答案以包含 update 用法
    【解决方案2】:

    使用案例陈述

    update table
    set column1 = case when length(column1) = 4 then concatenate('00000', column1)....
    

    在每个可能的列长度的 case 语句中都有一个元素。有点手动,可能有更简单的方法,但这是一种可能性。

    【讨论】:

      猜你喜欢
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 2022-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多