【问题标题】:SQL how to add a leading 0SQL如何添加前导0
【发布时间】:2018-06-12 10:26:40
【问题描述】:

任何帮助将不胜感激。我对 mySQL 很陌生,并且认为必须有一种更简单的方法来更新我的数据库。

所以我的问题是我有许多没有前导零的记录,但我需要任何记录中的字符总数为 5。

例如6930 实际上应该是 06930

我遇到了这段代码,但我无法让它正常工作,谁能指出我正确的方向。

 UPDATE `it_asset_register`.`tab_id_master` 
 SET tab_id_master.ID = LEFT('00000', 5-LEN(tab_id_master.ID)) +    tab_id_master.ID
 WHERE ID = '8407' AND LEN(tab_id_master.ID)<5 AND Len(tab_id_master.ID)>0;

谢谢

【问题讨论】:

标签: mysql


【解决方案1】:

LPAD 应该在这里完成工作:

SELECT LPAD ('123', 5, '0');
00123

SELECT LPAD ('12345', 5, '0');
12345

试试:

UPDATE `it_asset_register`.`tab_id_master` 
 SET tab_id_master.ID = LPAD (tab_id_master.ID, 5, '0')
 WHERE ID = '8407' AND LENGTH(tab_id_master.ID)<5 AND LENGTH(tab_id_master.ID)>0;

【讨论】:

  • 感谢您的帮助,我收到一条错误消息,指出函数 LEN 不存在
  • 这正是我想要的,非常感谢...如果我删除 ID = '8407' 这将适用于所有字段吗?在我运行它之前仔细检查一下。
  • 要查看哪些行会受到影响,请将 WHERE 子句放入 SELECT 语句中;例如:SELECT * FROM ``it_asset_register``.``tab_id_master`` WHERE ID = '8407' AND LENGTH(tab_id_master.ID)&lt;5 AND LENGTH(tab_id_master.ID)&gt;0; 然后,您可以在实际执行更新之前删除ID = '8407' AND 部分而不影响任何数据。
  • 我刚刚运行它,发现记录比我想象的要多得多,但是当我将代码修改为UPDATE it_asset_register.tab_id_master` SET tab_id_master.ID = LPAD (tab_id_master.ID, 5, '0') WHERE LENGTH(tab_id_master.ID)0; ` 我不断收到与键列相关的 1175 错误消息,但我使用的 ID 字段是主键列。禁用安全更新是否足够安全?
  • 我认为这可能值得提出一个新问题。
【解决方案2】:

要在 MySQL 中连接两个或多个字符串,您必须使用 CONCAT() 函数。 一个可能的解决方案是:

UPDATE tab_id_master
SET id = SUBSTRING(CONCAT('00000', id), -5)
WHERE LENGTH(id) > 0 AND LENGTH(id) < 5;

您也可以使用LPAD() 函数:

UPDATE tab_id_master
SET id = LPAD(id, 5, '0')
WHERE LENGTH(id) > 0 AND LENGTH(id) < 5;

问候

【讨论】:

    【解决方案3】:
    UPDATE
        table_name
    SET
        column_name = RIGHT('00000' + CAST(column_name AS CHAR), 5)
    

    这会将 5 个零和您的 ID 连接成类似“000001234”的内容。然后它选择最右边的 5 个字符。

    【讨论】:

      【解决方案4】:

      您没有指定tab_id_master.ID 类型。如果它是数字类型,您将无法存储带有前导零的数字,否则您可以使用LPAD():

      SET tab_id_master.ID = LPAD(tab_id_master.ID, 5, 0)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-26
        相关资源
        最近更新 更多