You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle云数据库特定数值显示为NULL的异常问题求助

Oracle云19c数据库数值列显示异常问题排查

问题现象

Delphi应用使用19.18.0.0.0版本Oracle客户端连接Oracle云19c数据库,近几个月出现异常:向数值列插入部分特定数值后,这些字段在SQL Developer等工具中显示为NULL,但在该Delphi应用自身查询时数值显示正常。

  • 执行SELECT TO_NUMBER(COL1) FROM TEST;会抛出ORA-01722无效数字错误。
  • 触发问题的数值包括:123、197、198、199、1480000、1490000、1700000、1710000;196、200等数值无此问题。
  • 使用NVL函数验证,这些显示为NULL的字段并非真实NULL(NVL(COL1, 1000)仍返回NULL,但DUMP能看到存储的字节数据)。

测试验证细节

测试表创建

CREATE TABLE TEST (
    TOOL NUMBER(1),
    COL1 NUMBER(15,2)
);

插入操作

Delphi应用执行的插入语句

INSERT INTO TEST (TOOL, COL1) VALUES (1, NULL);
INSERT INTO TEST (TOOL, COL1) VALUES (1, 196);
INSERT INTO TEST (TOOL, COL1) VALUES (1, 197);
INSERT INTO TEST (TOOL, COL1) VALUES (1, 198);
INSERT INTO TEST (TOOL, COL1) VALUES (1, 199);
INSERT INTO TEST (TOOL, COL1) VALUES (1, 200);
COMMIT;

SQL Developer执行的插入语句

INSERT INTO TEST (TOOL, COL1) VALUES (2, NULL);
INSERT INTO TEST (TOOL, COL1) VALUES (2, 196);
INSERT INTO TEST (TOOL, COL1) VALUES (2, 197);
INSERT INTO TEST (TOOL, COL1) VALUES (2, 198);
INSERT INTO TEST (TOOL, COL1) VALUES (2, 199);
INSERT INTO TEST (TOOL, COL1) VALUES (2, 200);
COMMIT;

查询结果对比

Delphi应用执行查询的结果

SELECT TOOL, COL1, COL1 + 1 COL1P1, DUMP(COL1, 16) DMP FROM TEST WHERE (COL1 IS NOT NULL);
TOOLCOL1COL1P1DMP
1196197Typ=2 Len=3: c2,2,61
1197198Typ=2 Len=3: c2,2,62
1198199Typ=2 Len=3: c2,2,63
1199200Typ=2 Len=3: c2,2,64
1200201Typ=2 Len=2: c2,3
2196197Typ=2 Len=3: c2,2,61
2197198Typ=2 Len=3: c2,2,62
2198199Typ=2 Len=3: c2,2,63
2199200Typ=2 Len=3: c2,2,64
2200201Typ=2 Len=2: c2,3
SELECT TOOL, COL1, COL1 + 1 COL1P1, DUMP(COL1, 16) DMP FROM TEST WHERE (COL1 IS NULL);
TOOLCOL1COL1P1DMP
1NULLNULLNULL
2NULLNULLNULL

SQL Developer执行查询的结果

SELECT TOOL, COL1, COL1 + 1 COL1P1, DUMP(COL1, 16) DMP FROM TEST WHERE (COL1 IS NOT NULL);
TOOLCOL1COL1P1DMP
1196197Typ=2 Len=3: c2,2,61
1NULL198Typ=2 Len=4: c2,2,61,65
1NULL199Typ=2 Len=4: c2,2,62,65
1NULL200Typ=2 Len=4: c2,2,63,65
1200201Typ=2 Len=2: c2,3
2196197Typ=2 Len=3: c2,2,61
2197198Typ=2 Len=3: c2,2,62
2198199Typ=2 Len=3: c2,2,63
2199200Typ=2 Len=3: c2,2,64
2200201Typ=2 Len=2: c2,3
SELECT TOOL, COL1, COL1 + 1 COL1P1, DUMP(COL1, 16) DMP FROM TEST WHERE (COL1 IS NULL);
TOOLCOL1COL1P1DMP
1NULLNULLNULL
2NULLNULLNULL

NVL函数测试结果

SELECT TOOL, COL1, NVL(COL1, 1000) COL1NVL, DUMP(NVL(COL1, 1000), 16) DMP FROM TEST;
TOOLCOL1COL1NVLDMP
1196196Typ=2 Len=3: c2,2,61
1NULLNULLTyp=2 Len=4: c2,2,62,65
1NULLNULLTyp=2 Len=4: c2,2,63,65
1NULLNULLTyp=2 Len=4: c2,2,64,65
1200200Typ=2 Len=2: c2,3
2196196Typ=2 Len=3: c2,2,61
2197197Typ=2 Len=3: c2,2,62
2198198Typ=2 Len=3: c2,2,63
2199199Typ=2 Len=3: c2,2,64
2200200Typ=2 Len=2: c2,3

已尝试的排查动作

  • 更换Oracle客户端版本至19.19.0.0.0、21.10.0.0.0,问题仍存在。
  • 在自建Oracle数据库中使用相同应用和客户端版本,未复现该问题。

求助内容

请问该数据库字段为何会出现这种状态?目前尝试多种工具和客户端组合均无法在自建库复现,寻求相关问题排查思路及解决方案。


内容的提问来源于stack exchange,提问作者Henning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 20:14:50