首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

关于TO_NUMBER函数中第二个参数解决方案

2013-12-17 
关于TO_NUMBER函数中第二个参数DECLARE a NUMBERBEGINa : TO_NUMBER($123,456.78,L999G999D99)END

关于TO_NUMBER函数中第二个参数
DECLARE
 a NUMBER;
BEGIN
  a := TO_NUMBER('$123,456.78','L999G999D99');
END;

参数2中的L,G,D分别是指定返回值中区域货币符号的位置,返回值中分组符的位置,返回值中小数点的位置

像这种'$123,456.78'字符串不指定格式确实会报错,那如果我传进的字符参数是未知的,我第二个参数应该怎么设置?
然后G的意思不是指返回值中分组符的位置吗,实际转换后的值是没有分组符的,为什么?

[解决办法]
试了一下,在10g里
SELECT TO_NUMBER('123,456.78','999999D99') from dual;
即使不指定分组符的位置,一样可以的到正确的结果
[解决办法]


--直接自动转换G
SELECT 
TO_NUMBER('-$321,909.10', 'L99999999999D99', 'NLS_CURRENCY= ''$''') "Amount"
FROM DUAL;


Format Models详情请看:
http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements004.htm#SQLRF51074

热点排行