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` )))))


但是有没有其他方法可以将 concat 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 回答