oracle - 我想将数据从 oracle 数据库导出到 csv,并且我在 varchar 列上放置了一个数字过滤器。它抛出 ORA:01722 错误。请建议
问题描述
Select count(*) from table where loc between 300 to 400.
loc
是一个 varchar 列。- 它没有选择所有数据
- 检查计数,给出 ORA :01722 错误
- 导出错误的结果。
从评论编辑:
loc 包含小于 300、大于 400 和字母数字的值,例如 'GT' 、 '3KT1'
解决方案
您当前的查询正在尝试将 varchar 与数字进行比较。因此,它会尝试将 varchar 即时转换为数字。这称为隐式转换。
您应该让它将 varchar 与 varchar 进行比较。
使用单引号,以便您与 varchars 进行比较,而不是数字
Select count(*) from table where loc between '300' to '400'
然后去阅读隐式转换
根据对您问题的更新,此列是合法的 varchar,不应转换为数字数据类型。
但是,您确实需要确定是否在同一列中错误地存储了不同类型的数据
推荐阅读
- java - 如何在Java中保存图像?
- javascript - 如何在 sequelize 对象上创建一个方法,以检查是否创建了另一个与之关联的对象?
- html - 将项目与底部对齐,同时在 flexbox 中保持拉伸
- mysql - MYSQL 删除连字符然后获取当前日期的前几个字符
- python - python中的for循环以获取查询集中的第n个元素
- r - R HighCharter - 没有要显示的数据
- python-3.x - 值错误():找到样本数量不一致的输入变量:[10540, 42158]
- html - 这个用户代理样式表代码是什么意思?
- php - 我有一个数组,我想将其更改为多维数组。我怎样才能做到这一点?
- swift - 从 Core Data 加载 NSManagedObject 时,我可以免费获得它的孩子吗?