在 pl sql 中将字符串转换为十进制

Convert String to Decimal in pl sql

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

我试过了

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

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

你可以试试TO_CHAR

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

But it will not convert the string to decimal number. instead it convert to a integer (4).

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

无论客户端如何,为了以您想要的格式查看数字,并假设您所在地区的小数点分隔符是 '.'NLS_NUMERIC_CHARACTERS'.,'),您可以简单地使用 TO_CHAR

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

像这样声明数字变量

number(4,1);

示例:

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