sql - 我可以在 Oracle 中传递 varchar2 的数字吗?

标签 sql oracle ora-01722

我有一个 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/

相关文章:

performance - Oracle 8i 日期功能慢

java - oracle jdbc 驱动版本疯狂

c# - 在 SELECT IN 中使用 Oracle 参数的问题

sql - oracle View 和网络流量

c# - SQL Guid to Identity 主键,批量查询

sql - 如何在城市/州未知时将客户链接到国家/地区

Oracle SQL : check individuals in list of values for presence in table

sql - 在 oracle 的 join select 查询中将某些列名称别名为一个字段

oracle - "Safe"TO_NUMBER()

sql - 像另一个一样创建一个配置单元表,但按键分区