2011-01-28 67 views
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到的结果与零?在MySQL汽车CONCAT字符串的长度如何选择

+0

如何接受答案? – Paisal 2011-01-28 11:13:36

回答

1

可能有一个数学函数来帮助你,尽管我不知道它是否更快。

让我们看看。你想要将c1的单个值乘以1000000,然后添加c2。 对于更一般的情况下,要通过

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

更繁殖: 您的最终价值将

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

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

+0

如果变量是char不是int。是繁重的工作? – Paisal 2011-01-28 10:42:52