0


 ex. c1, c2 = >  result

 c1       c1       result
 1         1       to  1000001
 2         9       to  2000009
 3         1       to  3000001
 21        34      to  2100034
 22        35      to  2200035
 23        55      to  2300055
 111       1234    to  1111234
 112       8392    to  1128392
 113       2833    to  1132833


 a part of my MySQL SELECT CONCAT() statement with cut out "c1" look like,


 IF(CHAR_LENGTH(`c2`)=1,  concat('00000',`c2`), 
   IF(CHAR_LENGTH(`c2`)=2, concat('0000',`c2`),
    IF(CHAR_LENGTH(`c2`)=3, concat('000',`c2`),
     IF(CHAR_LENGTH(`c2`)=4, concat('00',`c2`),
      IF(CHAR_LENGTH(`c2`)=5, concat('0',`c2`),`c2` )))))


しかし、連結 c1 と c1 のこのコードを結果に減らし、中央にゼロがあり、追加する必要があるゼロの数を自動計算する他の方法はありますか?

4

2 に答える 2

1

LPADを見てください。

于 2011-01-28T10:35:02.397 に答える
1

ここで役立つ数学関数があるかもしれませんが、それが速いかどうかはわかりません。

どれどれ。c1 の単一の値に 1000000 を掛けてから、c2 を加算します。より一般的なケースでは、

  1000000 / 10^(char_length(`c1`)-1)

もっと:あなたの最終的な価値は

(c1 *  (1000000 / 10^(char_length(`c1`)-1))) + c2

しかし、@eumiro の LPAD 関数の方が良い答えかもしれません

于 2011-01-28T10:37:25.487 に答える