Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL-如何显示2位小数_Sql_Oracle_Decimal_Number Formatting - Fatal编程技术网

Oracle SQL-如何显示2位小数

Oracle SQL-如何显示2位小数,sql,oracle,decimal,number-formatting,Sql,Oracle,Decimal,Number Formatting,请帮我显示一个长度未知的数字,小数点后2位。 例子: 如果号码是230000,那么我需要将其打印为230000.00 我试过了 Select to_char(amount, 'FM99999999.90') as amt from customer; 使用concat如下: select concat(amount, '.00') from customer 格式化通常是前端的“问题”;每一个像样的工具(无论是Oracle Apex、报表、表单、Jasper报表等等)都有一个选项,可以根据需

请帮我显示一个长度未知的数字,小数点后2位。 例子: 如果号码是230000,那么我需要将其打印为230000.00

我试过了

Select to_char(amount, 'FM99999999.90') as amt from customer;

使用
concat
如下:

select concat(amount, '.00') from customer

格式化通常是前端的“问题”;每一个像样的工具(无论是Oracle Apex、报表、表单、Jasper报表等等)都有一个选项,可以根据需要格式化数字。为什么?使这些值保持为数字,以便能够对其应用例如
求和
函数或任何您可能需要的函数

在SQL*Plus(或类似的GUI工具)中,格式化是通过
TO_CHAR
函数和所需的格式掩码完成的。如果需要两个小数和(例如)千分隔符,可以执行以下操作:

SQL> with customer (amount) as
  2    (select 230000 from dual union all
  3     select 3.14   from dual union all
  4     select 0.0002 from dual union all
  5     select 25.123 from dual
  6    )
  7  select amount,
  8         to_char(amount, 'fm999g999g990d00') new_amount,
  9    lpad(to_char(amount, 'fm999g999g990d00'), 10, ' ') new_amount2
 10  from customer;

    AMOUNT NEW_AMOUNT      NEW_AMOUNT2
---------- --------------- ----------------------------------------
    230000 230.000,00      230.000,00
      3,14 3,14                  3,14
     ,0002 0,00                  0,00
    25,123 25,12                25,12

SQL>
  • 请注意,新值具有…
    0d00
    格式掩码,可确保在小数点周围实际看到零
  • 使用
    G
    D
    表示千组和小数,而不是逗号和点
  • new\u amount2
    ,传统上,已经应用了
    lpad
    ,因此值是右对齐的。我假设这些值的最大长度为10(您应该知道得更清楚)

如果您确实使用SQL*Plus(现在非常少见),您甚至可以使用它的
setnumformat
命令,这样就不需要进行额外的修改;您只需选择您拥有的:

SQL> set numformat 999g990d00
SQL>
SQL> with customer (amount) as
  2    (select 230000 from dual union all
  3     select 3.14   from dual union all
  4     select 0.0002 from dual union all
  5     select 25.123 from dual
  6    )
  7  select amount
  8  from customer;

     AMOUNT
-----------
 230.000,00
       3,14
       0,00
      25,12

SQL>

LPAD和RPAD应该完成嵌套在
to_number
函数中的技巧。假设是Oracle数据库。请添加相关的RDBMS标记(MySQL、PostgreSQL等)以获得相关的解决方案。为什么不添加更多的9?我厌倦了那个逻辑(),有了它,你们可以在表中插入‘不真实’的大数字,仍然可以工作。