为什么在SQL Developer中此查询会导致此错误?

时间:2019-03-19 04:53:32

标签: oracle plsql

为什么当我尝试在SQL Developer中运行此查询时出现显示的错误:

DECLARE
    p_latitude number;
BEGIN
    p_latitude:=TO_NUMBER(LTRIM(RTRIM(REGEXP_SUBSTR('BT1 1AA|54.60240|-5.92214|875082434', '[^|]+', 1, 2),'"'),'"'));
END;

错误:

  

ORA-06502:PL / SQL:数字或值错误:字符到数字的转换错误
  ORA-06512:在第4行

有人可以帮助我解决此错误吗?

预期输出:

54.60240

1 个答案:

答案 0 :(得分:1)

我认为您可以通过这样的转换来管理它:

DECLARE
 p_latitude number;
BEGIN
 with t(nr) as
 (
  select LTRIM(RTRIM(REGEXP_SUBSTR('BT1 1AA|54.60240|-5.92214|875082434', '[^|]+', 1, 2),'"'),'"') 
     from dual
 )
 select to_number(replace(nr,'.',','),'fm99G990D00000','NLS_NUMERIC_CHARACTERS = '',.''')
   into p_latitude
   from t;
END;