【问题标题】:how auto concat string length in mysql select如何在mysql选择中自动连接字符串长度
【发布时间】:2011-01-28 10:32:18
【问题描述】:
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 string if-statement concat


    【解决方案1】:

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

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

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

    更多: 您的最终价值将是

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

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

    【讨论】:

    • 刚试过,但如果你有例如一个包含数字字符串的“文本”字段,您可以将其用于计算。
    • 正如您问题的第一个 cmets 所述,您可以/应该开始接受答案。如果您认为这是一个很好的解决方案,请按绿色的“复选”标记。不具体是这个答案,还包括以前问题的答案。
    • @Paisal - 你看到答案左上角附近的复选标记了吗?
    【解决方案2】:

    LPAD

    【讨论】:

      猜你喜欢
      • 2010-12-24
      • 2013-01-16
      • 2022-12-10
      • 1970-01-01
      • 2012-01-16
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多