读书人

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

发布时间: 2013-12-17 12:06:34 作者: rapoo

关于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

读书人网 >oracle

热点推荐