私は請求書番号のテーブルを持っています。ガイドラインによると、数字には6桁以上の数字が必要です。まず第一にやろうとしました:先行ゼロのあるLPAD
UPDATE t1 SET NUMER=CONCAT('00000',NUMER) WHERE LENGTH(NUMER)=1;
UPDATE t1 SET NUMER=CONCAT('0000',NUMER) WHERE LENGTH(NUMER)=2;
UPDATE t1 SET NUMER=CONCAT('000',NUMER) WHERE LENGTH(NUMER)=3;
UPDATE t1 SET NUMER=CONCAT('00',NUMER) WHERE LENGTH(NUMER)=4;
UPDATE t1 SET NUMER=CONCAT('0',NUMER) WHERE LENGTH(NUMER)=5;
しかし、これは効率的ではなく、かなりです。私はLPAD
機能を試してみましたが、機能するので、問題が来た:
UPDATE t1 SET NUMER=LPAD(NUMER,6,'0') WHERE CHAR_LENGTH(NUMER)<=6 ;
影響を受けZERO行を返します
。また、彼らはグーグルで、引用符にゼロを入れると問題は解決しますが、助けにはならないと言います。毎日の輸入です。
EDIT: 列NUMERは、INT(19)であり、既にのようなデータを含む:
NUMER
----------
1203
12303
123403
1234503
...
(それは今では3〜7桁異なる長さのデータで満たされています)
「NUMER」列にはどのデータ型がありますか?数値に 'ZEROFILL'属性を使用しても問題は解決していませんか? http://dev.mysql.com/doc/refman/5.5/en/numeric-type-attributes.html – CBroe
可変数の先行/後続ゼロを含むようにINT列を更新することはできません。また、INT(19)は無意味です。これは19桁の整数ではありません。ディスプレイの長さは19で、4バイトの整数(2の32乗)です。表示の長さは表示する桁数です。実際の桁数は何も表示されません。長い話は短いです - 6桁の請求書で始まり、数字を増やしてください。 –
@CBroe、いいえ、ZEROFILは良くありません。なぜなら私は履歴データを持っているからです。 1203は001203に変更され、私は7桁の数字を持っています。だから私は、それぞれの数字の後ろにすべての履歴を変更するだろう – jaczes