Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> to_number question

to_number question

From: <Stephen.Lee_at_DTAG.Com>
Date: Wed, 14 Jul 2004 18:56:06 -0500
Message-ID: <D6339830FC73944E889CC3CEADDB205B07909515@bu-dtagpo1.tracs.com>

OK folks. I've slammed this around every which way I can think of.

Two columns of a table are char(18) and contain 13, 15, or 16 numeric digits. The digits are KNOWN to be strictly numeric (except for the padding out to 18 characters).
I can select:

   to_number(COLUMN) OK
   to_number(trim(COLUMN) OK
   cast(COLUMN AS NUMBER) OK.
   to_number(COLUMN A) - to_number(COLUMN B) OK    to_number(COLUMN A) - 12345 OK

But if I try something like
select yadayada from table where 123 < {any of the above number conversions)

I get ORA-01722: invalid number
with the * under the number conversion in the where clause.

Generally, if I try ANY kind of comparison or arithmetic operation in the WHERE clause, I get the error.
While I can: select to_number(COLUMN A) - to_number(COLUMN B) OK I cannot do: WHERE to_number(COLUMN A) - to_number(COLUMN B) > 0;

I've tried fiddling with format specifiers in the TO_NUMBER function. The TO_NUMBER section of the O'Reilly PL/SQL Programming sheds no light on the problem. Might there be someone amongst the learned out there who can? (The version is 9.2.0.4)



Please see the official ORACLE-L FAQ: http://www.orafaq.com

To unsubscribe send email to: oracle-l-request_at_freelists.org put 'unsubscribe' in the subject line.
--

Archives are at http://www.freelists.org/archives/oracle-l/ FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html
Received on Wed Jul 14 2004 - 18:52:53 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US