ORA-00920:无效的关系运算符(将数字条件应用于 varchar 列)



我在oracle数据库中有一个varchar列,用于存储数字和字符值。

ID : VALUE
01 : 12
02 : 15
03 : 16
04 : 08
05 : Positive

当我在 where 子句中使用数字条件时出现错误。

WHERE VALUE > 10

如何解决这种情况?

如果您使用的是 Oracle 12cR2,那么当转换错误发生时,您可以使用default value

SQL>
SQL> CREATE TABLE YOUR_TABLE AS
2  (SELECT '01' AS ID , '12' AS VALUE FROM DUAL UNION ALL
3  SELECT '02', '15' FROM DUAL UNION ALL
4  SELECT '03', '16' FROM DUAL UNION ALL
5  SELECT '04', '08' FROM DUAL UNION ALL
6  SELECT '05', 'Positive' FROM DUAL);
Table created.
SQL>
SQL> SELECT * FROM YOUR_TABLE
2  where TO_NUMBER(value DEFAULT -1 ON CONVERSION ERROR) > 10;
ID VALUE
-- --------
01 12
02 15
03 16

干杯!!

如您所说,您的value列由字符值组成。

要对其应用正确的数字条件,您必须将其转换为数字:

SELECT *
FROM table
WHERE 10 < CASE value 
WHEN 'Positive' THEN null 
WHEN 'Negative' THEN null 
ELSE TO_NUMBER(value) 
END

相关内容

  • 没有找到相关文章

最新更新