1

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

80081
414365
567

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

有任何想法吗?

4

1 回答 1

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
于 2012-10-22T12:57:53.410 回答