SQL> create table test (val number(4, 2));
Table created.
SQL> insert into test (val) values (1.1);
1 row created.
SQL> insert into test (val) values (to_number(to_char('2,2', '99D99')));
1 row created.
SQL> insert into test (val) values
2 (to_number(to_char('3,3', '99D99', 'nls_numeric_characters=,.')));
1 row created.
SQL> select * From test order by val;
VAL
----------
1,1
2,2
3,3
如果我以错误的方式使用它,则会出现错误:
SQL> insert into test (val) values
2 (to_number(to_char('4,4', '99D99', 'nls_numeric_characters=.,')));
(to_number(to_char('4,4', '99D99', 'nls_numeric_characters=.,')))
*
ERROR at line 2:
ORA-01722: invalid number
SQL>
在克罗地亚,我们有一个小数点逗号,而不是点;切换到小数点:
SQL> alter session set nls_numeric_characters = '.,';
Session altered.
SQL> select * From test order by val;
VAL
----------
1.1
2.2
3.3
SQL>
1条答案
按热度按时间pobjuy321#
如果你传递一个数字,你将插入一个数字。否则,请使用
TO_CHAR
具有适当的格式掩码(和TO_NUMBER
明确告知甲骨文你在做什么)。如果我以错误的方式使用它,则会出现错误:
在克罗地亚,我们有一个小数点逗号,而不是点;切换到小数点: