问题标签 [ora-01722]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - 如何获取 ora-01722 的失败列名:插入时数字无效
如何获取 ora-01722 的失败列名:插入时数字无效。
我有两张桌子。表 A - 所有一百列都是 varchar2 和表 B 一半 varchar2 另一半数。
需要将表a加载到表b中。映射不是 1 对 1。列名不匹配。插入 b ( c1, c2, c3, c4 .. c50,c51 .. c100 ) 从 a 中选择 to_number(c20) + to_number(c30), to_number(c10), to_number(c80) .. c4, c5 .. c40 .
在 ora-01722 的情况下,手动查找失败的列需要花费大量时间。
所以我尝试了 - 将错误记录到 err$_b ('INSERT') 拒绝限制无限制。它给你失败的行,但不是列。仍然需要手动查找失败的列。帮助不大。
尝试了错误处理,但是当其他人然后 v_ret := DBMS_SQL.LAST_ERROR_POSITION; 时总是得到 0 偏移位置。dbms_output.put_line(dbms_utility.format_error_stack); dbms_output.put_line('偏移位置错误'||v_ret);
我可以使用自定义 is_number 函数在插入之前检查是否为数字。但在这种情况下,我会得到空目标值,不知道源是空的还是数字格式错误。
可以通过运行数据检查来查找失败的行和列来自动化该过程。如果映射是一对一的,那么简单的数据字典查询可以生成报告以显示哪些列将失败。
如果表列之间没有一对一的映射,则可以定义映射并将其存储到单独的表中,然后运行报表。
是否有更多的 oracle 可以帮助找到失败的列?有没有更好的手动方法可以快速找到它?
sql - ORA-01722: 子查询中抛出无效数字
我有一个查询如下:
ORA-01722 被抛出上述查询,除非我把这 2 行:
在子查询 WAH.ALERT_KEY 的右括号内
但是,这不应该是这样,因为这两行不是子查询的一部分。我想知道子查询中的哪个字段抱怨转换失败。
oracle-adf - 在 ADF throw ORA-01722 中创建 varchar 序列
朋友们,我正在研究 jdev12c,但我遇到了问题,我能够使用 bc4j 测试仪创建新记录,但是当我尝试更改(更新)现有数据时,它会抛出异常 Invalid NumberError while selecting entity for CustmerInfo: ORA-01722: invalid number
我已经搜索过这个错误但我无法获取解决方案只是为了提供更多信息我有一个主表和 2 个子表。在主表中我有 2 列使用 DBSequence(数据库中的序列和触发器)和一个强制日期字段(时间戳)。我发现了 customernumber 列实际上是 varchar 的原因,因为我将序列与前缀连接然后存储它。现在问题是,一旦我将实体属性更改为 DBSEQUENCE,它就会抛出无效数字错误以进行更新
sql - ORA-01722: 无效数字 - 具有两位小数的值
我正在尝试从文本字段中获取最大值。除两个值外,所有值都是带一个小数的数字。但是,其中两个值具有类似8.2.10
. 我怎样才能只拉回整数值?值可以高于9.n
,因此我需要将此字段转换为数字,以便获得返回的最大值。所以我只想8
从8.2.1
.
Select cast(VERSION as int)
由于这两个值中包含第二个值而被轰炸.
。
oracle - 如何找到导致 ORA-01722 的不良数据
我正在使用 ojdbc8 运行直接查询,该查询会抛出java.sql.SQLSyntaxErrorException: ORA-01722: invalid number
某些结果。
这发生在 SQL Developer 中并通过 java API(这里的名称是 varchar):
通过调试,我隔离了几行导致错误的行,但是当我仅选择这些行(而不是选择 *)时,我没有遇到错误,这让我相信这可能是某种驱动程序/性能问题?
我还尝试使用我在 SO 上找到的代码查找错误数据,但它返回时没有错误(PL/SQL procedure successfully completed
):
oracle - 我想将数据从 oracle 数据库导出到 csv,并且我在 varchar 列上放置了一个数字过滤器。它抛出 ORA:01722 错误。请建议
loc
是一个 varchar 列。- 它没有选择所有数据
- 检查计数,给出 ORA :01722 错误
- 导出错误的结果。
从评论编辑:
loc 包含小于 300、大于 400 和字母数字的值,例如 'GT' 、 '3KT1'
sql-loader - SQL 加载程序在加载 .txt 文件时失败,这是比较对象 cmdlet 的结果
我从遗留应用程序中收到一个固定格式的文件,该文件每天由 SQL 加载器加载到 oracle 表中。新需求需要比较第 1 天和第 2 天的文件,并且只附加差异,因此第 2 天结束时的数据看起来像第 1 天(初始加载)+ 第 2 天 - 第 1 天(仅更改)。
我正在使用下面的命令来找出两个文件之间的区别
比较对象 -referenceObject $(Get-Content $File1) -differenceObject $(Get-Content $File2) | %{$ .Inputobject + $ .SideIndicator} | 英尺-自动 | 输出文件 $fileDiff.txt -width 5000
compare-object 输出的第一行示例如下所示:
第4614章 32570544900721657
控制文件读取 infile 如下:
PER_ID POSITION(1:8) 字符由空白终止,
USER_ID POSITION(9:16) 字符由空白终止,
USER_ID_PREV POSITION(17:24) 字符由空白终止,
日志给了我一个丢弃所有记录的错误原因,如下所示:
记录 1:拒绝 - 表 PDB_EXPORT_DELTA 的 PER_ID 列出错。ORA-01722: 无效号码
我不确定这是否是由于 FileDiff.txt 不再是固定格式,或者 SQLLoader 不再将其识别为固定格式。
我对这两个方面都进行了研究,但没有发现任何关于 Compare-Object 保留或更改输出差异文件格式的内容,也没有看到任何关于 SQLLoader 控制文件中的类型转换值的内容。任何帮助深表感谢。也欢迎对实现上述要求的其他方法进行思考。TIA
sql - substr 错误 -- ORA-01722: 无效的数字单独字符串
我正在尝试将名字和姓氏分开。我有一个名为“全名”的列,它的名字和姓氏以及一个逗号都在一个列中。我已经尝试了以下方法,但我收到一个错误“它不是一个有效的数字”。当我删除逗号时它可以工作,所以我不确定如何在公式中加入逗号以便它可以工作。
, substr(Fullname,1,',') as Lastname
,substr(Fullname,',',' ') as Firstname
sql - 仅在案例语句中添加年份得到无效数字错误 - ORA-01722
原谅我,因为我是新手。我正在尝试在查询中为日期添加一年。要添加的年份基于数据库中的月/日。如果日期在 11 月 1 日之前,那么年份将是 2017 年,如果在 11 月 1 日之后,那么它将是 2018 年。我已经尝试了几种方法(见下文)并且可以在查询中添加年份但是当我输入他们在案例陈述中我得到“无效号码”错误。
在日期使用 to_char:
添加月份:
这些在 select from dual 语句中运行,没有错误。有任何想法吗?提前非常感谢。
sql - 无法插入行:错误原因是无效编号
我创建了这个表,我试图为其插入一条记录:
但是,当我进行插入时:
我收到以下错误:
第 1 行出现错误:ORA-01722:无效号码
有人可以指出我做错了什么吗?谢谢