如何在mysql中自动连接字符串长度选择

时间:2011-01-28 10:32:19

标签: mysql string if-statement concat



 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到结果,中间为零,并自动计算必须添加多少个零?

2 个答案:

答案 0 :(得分:1)

请看LPAD

答案 1 :(得分:1)

可能有一个数学函数可以帮助你,虽然我不知道它是否更快。

让我们看看。您想将c1的单个值乘以1000000,然后添加c2。 对于更一般的情况,您希望乘以

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

更多: 您的最终价值将是

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

但是来自@eumiro的LPAD功能可能是一个更好的答案