Solved

How to get negative values to work with To_Number?

Posted on 2007-12-04
8
1,232 Views
Last Modified: 2011-10-03
I have the following code snippet. It works when the value in the variable TotalDue is 0 or greater. However if TotalDue has a negative value, it returns 0 instead of the correct value. For instance, if TotalDue is 100 and Sum_Memo is 50, it will return 50. However, if TotalDue is -100, then instead of returning -150, it returns 0. TotalDue and SumMemo are string variables. How can I fix it so it will show the correct value. incidentally, the colon in front of the variable just indicates that it an external variable, it does not have any bearing on the final result.

SELECT
To_Char(NVL(To_Number(:TotalDue),0) - NVL(To_Number(:Sum_Memo),0),'999,999.99')
INTO :TotalDuePrint
FROM dual

Open in new window

0
Comment
Question by:geeta_m9
  • 5
  • 3
8 Comments
 
LVL 13

Expert Comment

by:anand_2000v
ID: 20405842
try
SELECT

To_Char(NVL(To_Number(:TotalDue),0) - NVL(To_Number(:Sum_Memo),0),'MI999,999.99')

INTO :TotalDuePrint

FROM dual

Open in new window

0
 

Author Comment

by:geeta_m9
ID: 20405935
I cannot use that format, I obtain an "Invalid Number Format Model."
0
 
LVL 13

Expert Comment

by:anand_2000v
ID: 20406001
What do you get if you try
SELECT

NVL(To_Number(:TotalDue),0) - NVL(To_Number(:Sum_Memo),0)

INTO :TotalDuePrint

FROM dual

Open in new window

0
 

Author Comment

by:geeta_m9
ID: 20406057
The value in the TotalDue has commas in it, i.e. 2,000 and I believe that is what is affecting the output. How do  I strip out the commas from TotalDue using SQL.
0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 
LVL 13

Expert Comment

by:anand_2000v
ID: 20406084
try
SELECT
NVL(To_Number(replace(:TotalDue,',')),0) - NVL(To_Number(:Sum_Memo),0)
INTO :TotalDuePrint
FROM dual
0
 

Author Comment

by:geeta_m9
ID: 20406150
That works! Thank you! However, I need to get it in the format 9,999.99. How can I include that in the statement?
0
 
LVL 13

Expert Comment

by:anand_2000v
ID: 20406163
That should work now.
0
 
LVL 13

Accepted Solution

by:
anand_2000v earned 500 total points
ID: 20406175

SELECT

To_Char(NVL(To_Number(replace(:TotalDue,',')),0) - NVL(To_Number(replace(:Sum_Memo,',')),0),'999,999.99')

INTO :TotalDuePrint

FROM dual

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Bulk insert into global temporary table 2 59
compre toata in where clue oracle 4 55
grouping on time windows 6 41
Oracle Listener Not Starting 11 13
Truncate is a DDL Command where as Delete is a DML Command. Both will delete data from table, but what is the difference between these below statements truncate table <table_name> ?? delete from <table_name> ?? The first command cannot be …
I remember the day when someone asked me to create a user for an application developement. The user should be able to create views and materialized views and, so, I used the following syntax: (CODE) This way, I guessed, I would ensure that use…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
This video shows information on the Oracle Data Dictionary, starting with the Oracle documentation, explaining the different types of Data Dictionary views available by group and permissions as well as giving examples on how to retrieve data from th…

930 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now