我可以在Oracle中为varchar2传递一个数字吗?

Vic*_*tor 5 sql oracle ora-01722

我有一个Oracle表,列(col1)有类型varchar2(12 byte).它有一个行和值col11234

当我说

select * from table where col1 = 1234
Run Code Online (Sandbox Code Playgroud)

甲骨文说无效号码.这是为什么?为什么我不能传递数字varchar2呢?

编辑:所有回复都很棒.谢谢.但我无法理解为什么它并不需要1234的时候1234是有效的VARCHAR2数据类型.

JAQ*_*ost 5

问题是您希望Oracle将隐式地将1234转换为字符类型.相反,Oracle隐式地将列转换为数字.列中存在非数字值,因此Oracle会引发错误.在Oracle文档警告说,不要隐式转换之前它解释了他们将如何得到解决.解释您所看到的行为的规则是:

将字符值与数值进行比较时,Oracle会将字符数据转换为数字值.