我有一个 Oracle 表,其中一列 (col1
) 的类型为 varchar2(12 byte)
。它有一行,col1
的值为 1234
当我说
select * from table where col1 = 1234
Oracle 表示数字无效。这是为什么?为什么我无法传递 varchar2
类型的数字?
编辑:所有的回复都很好。谢谢。但我无法理解为什么当 1234
是有效的 varchar2 数据类型时它不采用 1234
。
最佳答案
问题在于您期望 Oracle 会将 1234 隐式转换为字符类型。相反,Oracle 隐式地将列转换为数字。该列中存在非数字值,因此 Oracle 会抛出错误。 Oracle documentation在解释如何解决隐式转换之前警告隐式转换。解释您所看到的行为的规则是:
When comparing a character value with a numeric value, Oracle converts the character data to a numeric value.
关于sql - 我可以在 Oracle 中传递 varchar2 的数字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10420376/