MySQL将数据添加到现有字段

时间:2012-10-22 12:38:44

标签: mysql field updates

我有一个字段enq_id - 它目前包含的数字如下:

80081
414365
567

现在,我需要以两种方式更新字段,首先我需要查明是否有任何数字长度超过6个字符(不应该但我需要检查)。然后我需要在该字段上设置6个字符的字符限制,然后最后将0's添加到任何enq_id的开头,该字符长度不是6个字符,以使其成为6个字符。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果以下内容返回您尝试实现的结果:

SELECT
    `enq_id`,
    IF(CHAR_LENGTH(`enq_id`) < 6,
        LPAD(`enq_id`,6,'0'),
        SUBSTRING(`enq_id`,1,6)
    ) AS 'result'
FROM `some_table`
WHERE CHAR_LENGTH(`enq_id`) != 6

然后使用以下内容将相应地更新您的表格。

UPDATE `some_table`
SET `enq_id` = 
    IF(CHAR_LENGTH(`enq_id`) < 6,
        LPAD(`enq_id`,6,'0'),
        SUBSTRING(`enq_id`,1,6))
WHERE CHAR_LENGTH(`enq_id`) != 6

请注意,SUBSTRING()函数会删除第6个字符后面的所有字符,LPAD会在必要时将前面的零(在上例中)添加到每个记录中。

<小时/> 更新:由于某种原因,我添加了额外的条件。优化的代码应该是:

SELECT `enq_id`,LPAD(`enq_id`,6,'0') AS 'result'
FROM `some_table`
WHERE CHAR_LENGTH(`enq_id`) < 6

UPDATE `some_table`
SET `enq_id` = LPAD(`enq_id`,6,'0')
WHERE CHAR_LENGTH(`enq_id`) < 6