强制转换错误预言机



我已经尝试了[CAST TO_NUMBER]方法,但没有一个可以转换从另一个过程返回的值。

SELECT DBMS_LOB.SUBSTR(SUBSTR(DETAIL_LOB, 2300, 4), 2000) 
  INTO RES 
FROM lONG_TO_CLOB_TEMP_TABLE;`

上述查询返回的 RES 值为 40。

RES 数据类型为 varchar2。

现在我想将该 RES 值转换为数字,以便我可以对此进行一些算术运算。

像 => 100/RES

不工作代码 =>

V_TEMP := CAST(RES AS NUMBER)
V_TEMP := TO_NUMBER(RES)

错误消息 =>"ORA-06502:PL/SQL:数字或值错误"

其最可能涉及的特殊字符(空格或换行符)

尝试

V_TEM := To_number(regexp_replace(trim(RES), '(^[[:space:]]+)|([[:space:]]+$)',null))

有一个换行符导致问题。

解决方式:-

REPLACE(REPLACE(REPLACE(column_name, CHR(10)), CHR(13)), CHR(9));
-

-特别感谢@KaushikNayak

要使用PL/SQL删除换行符,请使用以下命令:

declare charwithnewline VARCHAR2(10) := CONCAT('190', CHR(13));
begin
dbms_output.put_line('+++++++++++++++++++++++++');
dbms_output.put_line(charwithnewline);
dbms_output.put_line('+++++++++++++++++++++++++');
dbms_output.put_line(REPLACE(charwithnewline,CHR(13),''));
dbms_output.put_line('+++++++++++++++++++++++++');
end; 

注意:换行符可以是 CHR(13) 或 CHR(10) 或这两个字符的组合。逻辑是一样的。

最新更新