как выбрать длину строки auto concat в mysql - PullRequest
0 голосов
/ 28 января 2011


 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 ]

1 голос
/ 28 января 2011

Возможно, здесь вам поможет математическая функция, хотя я не знаю, быстрее ли она.

Посмотрим. Вы хотите умножить одно значение для c1 на 1000000, а затем добавить c2. В более общем случае вы хотите умножить на

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

больше: Ваше окончательное значение будет

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

Но эта функция LPAD от @eumiro может быть лучшим ответом

1 голос
/ 28 января 2011

Посмотрите на LPAD .

...