繁体   English   中英

无效的数字SQL错误

[英]Invalid number SQL error

我有这样的声明。 虽然我可以在Oracle 11g中执行此语句并查看结果。 但是我的朋友(他也使用Oracle 11g)无法执行此语句。 他收到无效的号码错误。 我不明白为什么。 你可以帮帮我吗? 他还尝试将upper_threshold强制转换为varchar,但没有用。

select *
from table
where (lower_threshold <> to_char( 0) or upper_threshold = 0 or upper_threshold is null)

lower_threshold具有varchar类型,上限阈值为整数值。

Oracle尝试ORA-01722: invalid number当我们尝试将非数字值转换为数字数据类型时,数字ORA-01722: invalid number

您说“上限阈值是整数值”,但table.upper_threshold数据类型似乎是字符串数据类型(VARCHAR2或类似的数据),如table.lower_threshold 在这种情况下,执行以下过滤器时:

upper_threshold = 0

Oracle实现的是

to_number(upper_threshold) = 0

您不会收到ORA-01722错误,因为表中的所有值都会愉快地转换为数字。 您的朋友不是很幸运,并且他在upper_threshold列中具有非数字值(空格,字母或其他内容)。

教导是,始终使用NUMBER列存储数字。


“实际上,我们都连接到相同的数据库,相同的表”

基本上,如果两个人针对具有相同数据的相同实际表运行相同的SQL,他们将获得相同的结果。 因此,你们中的一个必须做的与其他人有所不同。 尽管我无法想到可能导致ORA-01722错误的环境参数,但这可能与客户端设置有关。 更有可能是你们中的一个正在运行不同的语句或使用不同的表,或者(如Mathguy所建议的)对另一个数据集运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM