String to Number conversion [message #630743] |
Mon, 05 January 2015 01:21 |
|
sinpeak
Messages: 59 Registered: January 2011 Location: india
|
Member |
|
|
Hello,
This should explain my problem :
SQL> select value from nls_session_parameters where parameter='NLS_NUMERIC_CHARACTERS';
VALUE
--------------------------------------------------------------------------------
,.
SQL> select to_number('12.3456') from dual;
select to_number('12.3456') from dual
ERROR at line 1:
ORA-01722: numero non valido
Am I doing anything wrong ?
Please advise.
Thanks.
|
|
|
Re: String to Number conversion [message #630747 is a reply to message #630743] |
Mon, 05 January 2015 01:37 |
Lalit Kumar B
Messages: 3174 Registered: May 2013 Location: World Wide on the Web
|
Senior Member |
|
|
SQL> ALTER SESSION SET NLS_NUMERIC_CHARACTERS =',.';
Session altered.
SQL>
SQL> SELECT VALUE FROM nls_session_parameters WHERE parameter='NLS_NUMERIC_CHARACTERS';
VALUE
----------------------------------------------------------------
,.
SQL> SELECT to_number('12.3456') FROM dual;
SELECT to_number('12.3456') FROM dual
*
ERROR at line 1:
ORA-01722: invalid number
SQL>
SQL> ALTER SESSION SET NLS_NUMERIC_CHARACTERS ='.,';
Session altered.
SQL>
SQL> SELECT VALUE FROM nls_session_parameters WHERE parameter='NLS_NUMERIC_CHARACTERS';
VALUE
----------------------------------------------------------------
.,
SQL> SELECT to_number('12.3456') FROM dual;
TO_NUMBER('12.3456')
--------------------
12.3456
Or, in your case, without altering session -
SQL> SELECT VALUE FROM nls_session_parameters WHERE parameter='NLS_NUMERIC_CHARACTERS';
VALUE
----------------------------------------------------------------
,.
SQL> SELECT to_number('12,3456') FROM dual;
TO_NUMBER('12,3456')
--------------------
12,3456
Regards,
Lalit
[Updated on: Mon, 05 January 2015 02:00] by Moderator Report message to a moderator
|
|
|
|
Re: String to Number conversion [message #630789 is a reply to message #630751] |
Mon, 05 January 2015 07:11 |
|
Maaher
Messages: 7065 Registered: December 2001
|
Senior Member |
|
|
And, as a bonus, you could use the third parameter of TO_NUMBER:
SQL> select to_number('12.3456', '9999999D9999999', 'nls_numeric_characters=.,') xx
2 from dual
3 /
XX
----------
12,3456 Be sure to use the "D" in the format mask though.
MHE
|
|
|