添加$和第2轮小数位SQL

时间:2015-05-20 09:42:20

标签: sql oracle11g format

我希望格式化由子查询创建的输出,此子查询生成一个计算字段,我想格式化为$ XX.XX。

子查询:

(select avg(retail) from cars 
where brand = 'FORD' or brand = 'TOYOTA') as AVG_BRAND_PRICE_01

我基本上只是想添加一个$符号并将输出舍入到两位小数。

非常感谢任何帮助或指示。

我使用的是isql plus oracle 11g

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

'$' || Cast((select avg(retail) from cars 
where brand = 'FORD' or brand = 'TOYOTA') as decimal(4,2)) as AVG_BRAND_PRICE_01

如果你想要超过$ XX.XX,例如$ XXXXXXX.XX,那么你需要设置更高的小数,例如十进制(9,2)

示例SQL小提琴:http://www.sqlfiddle.com/#!4/9f684/2/0

答案 1 :(得分:0)

  

我基本上只是想添加一个$符号并将输出舍入到两位小数。

     

我使用的是isql plus oracle 11g

这是一个简单的显示设置。您需要正确设置 NUMFORMAT

如果你需要的是控制SQL*Plus上的显示格式,那么最好使用SQL*Plus命令来控制显示格式,而不是应用函数SQL级别。

SQL * Plus

SQL> SELECT AVG(sal) FROM emp;

  AVG(SAL)
----------
2073.21429

SQL> set numformat $9999D99
SQL> SELECT AVG(sal) FROM emp;

 AVG(SAL)
---------
 $2073.21

SQL>

如果您将值显式ROUND为两位小数,则使用 ROUND 函数:

SQL> set numformat $9999D99
SQL> SELECT ROUND(AVG(sal),2) FROM emp;

ROUND(AVG(SAL),2)
-----------------
         $2073.21

SQL>

如果您想要特定列的特定格式,则可以使用 COLUMN FORMAT 命令,该命令将覆盖该列的SET NUMFORMAT属性。

例如,

SQL> set numformat $99999.99
SQL> column comm format 99999.99
SQL> select sal, comm from emp where rownum <=5;

        SAL      COMM
----------- ---------
    $800.00
   $1600.00    300.00
   $1250.00    500.00
   $2975.00
   $1250.00   1400.00