【问题标题】:How to add leading zero to different char length in mysql?如何在mysql中将前导零添加到不同的字符长度?
【发布时间】:2012-06-12 05:41:00
【问题描述】:

您好,我有一个针对不同表的查询,所有表都有不同的长度,ID 需要前导零。是否可以使用一个查询将前导零添加到任何表?

假设第一个查询是insert to tbl1_field1(CHAR 3) 001,然后下一个查询是insert to tbl2_field2(CHAR 4) 0001,然后下一个是insert to tlb3_field3(CHAR 10) 0000000001。我正在使用php and mysql

【问题讨论】:

  • 为什么在 ID 中需要前导零...存储为直数,并在输出中格式化以显示前导零
  • @MarkBaker,你完全打败了我......我讨厌在回答问题时提出问题,但这是不可避免的。 Cindy,如果你的“ID”中有前导 0z,那么你做错了什么! :)
  • 但这正是我的客户想要的。 .我需要回答请

标签: php mysql


【解决方案1】:
UPDATE table
SET field1 = LPAD(id, 3, 0)

【讨论】:

    【解决方案2】:

    您可以使用LPAD 函数在 SELECT 查询中执行此操作 -

    SELECT LPAD(id, 4, 0) FROM table;
    

    查询将显示这样的字符串 - '0001'

    【讨论】:

    • ^^,如果我的问题不清楚,我很抱歉,我需要的是一个插入查询。但他们每个人都有不同的ID长度。在您的示例中,长度为 4,那么我的另一个表也使用长度超过 4 的此查询作为 char
    • 您可以引用表格的任何列或使用表达式来代替常量,例如:lpad(id, length(somefield), 0)
    【解决方案3】:

    我很确定我在您的问题中遗漏了一些东西,但您没有调整查询,而是考虑过表结构中的 ZEROFILL 选项?

    CREATE TABLE `test`.`TEST_LEADING_ZERO` (
        `ID` INTEGER UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
        PRIMARY KEY (`ID`)
    )
    ENGINE = InnoDB;
    

    【讨论】:

    • 不幸的是我不能改变表,假设我有 $query = insert into {$tbl} values {$array}
    • 噢,对不起,现在我使用 $query 插入所有数据,但是它们的 ID 长度不同,例如第一个 tbl 具有 (CHAR3) 第二个具有 (CHAR 4),是否存在一种我仍然可以为他们使用一个查询的方法?
    • 那么德瓦特的答案可能是最适合你的答案:)
    • 嗯,不确定,请帮帮我
    猜你喜欢
    • 2021-09-29
    • 2016-11-24
    • 1970-01-01
    • 2021-02-06
    • 2022-01-16
    • 1970-01-01
    • 2018-11-09
    • 2017-08-12
    • 1970-01-01
    相关资源
    最近更新 更多