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