在 oracle sql 命令行中成功执行任何 sql 后,它显示 2 就像我想查看它显示 2 而不是显示表的任何表的表或描述。
SQL> select * from dual
2
SQL> select * from user_objects
2
SQL>
Run Code Online (Sandbox Code Playgroud) 我们正在使用 SAP SLT 将 HANA 上的 SAP ECC 6.0 中的表复制到 Oracle 10g 仓库中。自开始以来,我们注意到NOT NULL
HANA 中的列定义保留在表的 Oracle 副本中,但 HANA 将许多值存储为空字符串。Oracle 将空(varchar)字符串存储为NULL
s 并且不知何故这与NOT NULL
列定义不冲突(即我们NULL
在列中定义为NOT NULL
)。
查询这些表会产生奇怪的结果:
SELECT COUNT(*) FROM warehouse.table WHERE col IS NULL;
0
SELECT COUNT(*) FROM warehouse.table WHERE col = '';
0
SELECT COUNT(*) FROM warehouse.table GROUP BY NVL(col,'N');
X 503206
N 2377222
Run Code Online (Sandbox Code Playgroud)
所以我们可以通过使用或函数来 NULL
判断这些列中有值,但是查询它们会返回奇怪的结果。NVL
DECODE
一旦我们改变了列,我们就会得到正确的结果:
ALTER TABLE warehouse.table MODIFY (col NULL);
Table altered.
SELECT COUNT(*) …
Run Code Online (Sandbox Code Playgroud)