出现错误的原因是varchar2类型列中存储了非number型字符。解决方法是将number类型使用to_char进行转换,如:select * from 表名 where 列名 = to_char(number数值)之所以出现这种错误,是由于oracle的隐式类型转换造成的,也就是说,oracle在查询时,会根据等式右边的数据类型对 左边的进行类型转换
1.在查询的where里面加入条件语句,查看异常数据: select*from表名wherenvl2(translate(字段名,'/1234567890','/'),'CHAR','NUMBER')='CHAR' 2.正则表达式函数 REGEXP_SUBSTR 处理,将数据进行过滤,ok! --条件语句:whereREGEXP_SUBSTR(t1.operatorid,'[0-9]+')ISNOTNULL--示例:selectt1.operatorid,t2.eq...
SQL> SELECT TO_NUMBER(58,'x') FROM dual; SELECT TO_NUMBER(58,'x') FROM dual * ERROR at line 1: ORA-01722: invalid number 后面x的位数必须大于等于 前面16进制数字的位数 用法三: Converts a DECIMA to HEX number (十进制转换为十六进制) SQL> select to_char(88,'xx') from dual; TO_ ...
一个查询 select to_number(c.name) as srvtype, value as typename from sys_code c where c.srvclass=9 --srvclass为字符型 一直工作得很好,但突然一天返回错误ORA-01722 invalid number。由于条件srvclass字段是varchar2类型,就想当然地以为是ORACLE的bug(恰巧上周刚确认了ORACLE的一个查询bug),将条件改写成...
错误说明:当向一个TIMESTAMP类型的字段插入一个to_char后的字符会报这个错误。 ORA-01844: 年度中的周值必须介于 1 和 52 之间 ORA-01845: 月份中的周值必须介于 1 和 5 之间 ORA-01846: 周中的日无效 ORA-01847: 月份中日的值必须介于 1 和当月最后一日之间 错误产生:当使用nvl函数针对date类型做nvl(...
第二种办法为使用TO_NUMBER或REGEXP_LIKE来自定义函数进行判断。 第一种办法示例: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 SYS@PROD1> SELECT 2 NVL2(TRANSLATE(REPLACE('12','.',''),'/1234567890','/'),'CHAR','NUMBER') IN_TYPE, 3 NVL2(TRANSLATE(REPLACE('12.34','.',''),'/...
ORA-17036 exception in OracleNumber OracleNumber 中的异常。 ORA-17037 Fail to convert between UTF8 and UCS2 不能在 UTF8 和 UCS2 之间转换。 ORA-17038 Byte array not long enough 字节数组不够长。 ORA-17039 Char array not long enough CHAR 数组不够长。 ORA-17040 Sub Protocol must be specifie...
用的函数是 create_date = to_date(#{createDate,jdbcType=VARCHAR},‘yyyy-MM-dd’),那么就会报错。 ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 CHAR ORA-00932: 数据类型不一致: 应为 CHAR, 但却获得 NUMBER 这2个是一类问题,说明类型不对应,一般出现在case when语句中。
ORA-17036exception in OracleNumberOracleNumber 中的异常。 ORA-17037Fail to convert between UTF8 and UCS2不能在 UTF8 和 UCS2 之间转换。 ORA-17038Byte array not long enough字节数组不够长。 ORA-17039Char array not long enoughCHAR 数组不够长。
NUMBER NUMBER CHAR 第二种办法示例: 1.利用to_number CREATE OR REPLACE FUNCTION ISNUMERIC(STR IN VARCHAR2) RETURN NUMBER IS V_STR FLOAT; BEGIN IF STR IS NULL THEN RETURN 0; ELSE BEGIN SELECT TO_NUMBER(STR) INTO V_STR FROM DUAL;