2011-01-28 50 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