1

私はフィールドを持っていますenq_id- 現在、次のような数字が含まれています:

80081
414365
567

ここで、フィールドを 2 つの方法で更新する必要があります。まず、数字のいずれかが 6 文字を超えているかどうかを確認する必要があります (存在しないはずですが、確認する必要があります)。次に、そのフィールドに 6 文字の文字制限を設定し、最後に、 6 文字でない長さ0'sの先頭に追加してenq_id6 文字にする必要があります。

何か案は?

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 に答える