【问题标题】:how to put specific number of characters in front of a string in pl/sql?如何在pl/sql中的字符串前面放置特定数量的字符?
【发布时间】:2018-10-07 06:12:45
【问题描述】:

我想在操作后将字符串固定为 20 个字符的长度。例如,如果我的字符串是1455,那么新字符串应该是00000000000000001455(20 个字符),前面有16 个0s。或者如果我的字符串是12345678,那么新字符串应该是00000000000012345678(20 个字符),前面有12 个0s。

我可以在用户定义的函数中做到这一点,但我想知道在 Oracle 中是否有一种简单的方法来做到这一点?我用谷歌搜索但找不到任何类似的解决方案。有什么建议吗?

【问题讨论】:

    标签: sql oracle varchar zero-padding


    【解决方案1】:

    这样做:

    select lpad('1455',20,'0') from dual;
    

    【讨论】:

    • 这就是我想要的。谢谢!
    【解决方案2】:

    你可以使用LPAD():

    SELECT LPAD('1455', 20, '0') FROM dual;
    

    或一般来说:

    SELECT LPAD(mystring, 20, '0') FROM mytable;
    

    如果mystring 的长度大于 20 个字符,它将被截断为 20 个字符(并且不填充!)。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      你可以使用TO_CHAR:

      SELECT TO_CHAR('1455', 'fm00000000000000000000') FROM dual;
      

      DBFiddle Demo

      【讨论】:

      • 这会将您的值隐式转换为 NUMBER,然后再转换回 CHAR。因此,如果您的字符串不是有效数字,它将失败。
      猜你喜欢
      • 2017-07-11
      • 2015-07-06
      • 1970-01-01
      • 2014-10-29
      • 2012-09-04
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      • 2019-06-29
      相关资源
      最近更新 更多