For this, I am trying to display my table values in a currency format, here’s my code;
x
SELECT SNAME,
(SAL) AS MONTHLY,
ROUND((SAL/22), 2) AS DAILY,
ROUND(((SAL/22)/8), 2) AS HOURLY
FROM STAFF
WHERE BRANCHID = 30
This is what I get;
SNAME MONTHLY DAILY HOURLY
---------- ---------- ---------- ----------
BATES 1800 81.82 10.23
This is what I want;
SNAME MONTHLY DAILY HOURLY
---------- ---------- ---------- ----------
BATES $1,800.00 $81.82 $10.23
So pretty much format the values with a ‘$’ sign and automatically add a ‘,’ where appropriate.
I am very new to this so I apologize if this sounds dumb in any way :p
Advertisement
Answer
This nature can be derived using the NLS setting.
You can alter the NLS_LANGUAGE
and NLS_TERRITORY
for your session and use the TO_CHAR function to achieve the desired behavior as follows:
SQL> alter session set NLS_LANGUAGE=AMERICAN;
Session altered.
SQL> alter session set NLS_TERRITORY=AMERICA;
Session altered.
SQL>
SQL> SELECT TO_CHAR(1800,'L99G999D00') salary FROM DUAL;
SALARY
--------------------
$1,800.00
SQL>
You can see current NLS setting using following Views:
NLS_SESSION_PARAMETERS
NLS_DATABASE_PARAMETERS
NLS_INSTANCE_PARAMETERS