【问题标题】:Convert String to Decimal in pl sql在pl sql中将字符串转换为十进制
【发布时间】:2019-02-13 16:11:41
【问题描述】:

我想将字符串转换为带一位小数的数字。 例如:

  • 转换后为4 -> 4.0
  • 4.1 转换后 -> 4.1
  • 04.1 转换后 -> 4.1
  • 04.0 转换后 -> 4.0

我试过了

SELECT TO_NUMBER('04.0','99.99') FROM dual;

但它不会将字符串转换为十进制数。而是转换为整数 (4)。

【问题讨论】:

    标签: oracle plsql decimal data-conversion varchar2


    【解决方案1】:

    但它不会将字符串转换为十进制数。取而代之的是 转换为整数 (4)。

    不是真的。显示的数字格式完全取决于客户端(SQL * plus / SQL Developer 等),与 Oracle 如何在内部存储您的数字无关,这取决于您为该列指定的精度。

    为了在不考虑客户端的情况下以所需格式查看数字并假设您所在地区的小数点分隔符是'.'NLS_NUMERIC_CHARACTERS'.,'),您可以简单地使用TO_CHAR

    SELECT TO_CHAR('04.0','0D9') FROM dual;
    4.0
    

    【讨论】:

    • 感谢您的回答。是的,它应该是 SELECT TO_CHAR('0.1', '0D9')FROM dual;否则,转换后将导致 0.9 为 .9
    • @ThilinaDeSilva:不客气,感谢您的确认。我已经相应地编辑了我的答案。
    【解决方案2】:

    你可以试试 TO_CHAR

    SELECT TO_CHAR('04.0','99.9') FROM dual;

    【讨论】:

    • 感谢您的回答。是的,它应该是 SELECT TO_CHAR('0.1', '0D9')FROM dual;否则,转换后将导致 0.9 为 .9
    【解决方案3】:

    像这样声明数字变量

    number(4,1);
    

    例子:

    declare
      pizza   number(4,1);
    begin
      pizza := 4.1; 
      DBMS_OUTPUT.put_line(TO_CHAR(pizza,'0D9'));
    end;
    

    【讨论】:

      猜你喜欢
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 2022-07-22
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      相关资源
      最近更新 更多