小编Bal*_*app的帖子

执行任何 SQL 的结果为 2

在 oracle sql 命令行中成功执行任何 sql 后,它显示 2 就像我想查看它显示 2 而不是显示表的任何表的表或描述。

SQL> select * from dual
  2
SQL> select * from user_objects
  2
SQL>
Run Code Online (Sandbox Code Playgroud)

oracle oracle-11g sqlplus

5
推荐指数
1
解决办法
136
查看次数

这些空值如何存储在 NOT NULL 列中?

我们正在使用 SAP SLT 将 HANA 上的 SAP ECC 6.0 中的表复制到 Oracle 10g 仓库中。自开始以来,我们注意到NOT NULLHANA 中的列定义保留在表的 Oracle 副本中,但 HANA 将许多值存储为空字符串。Oracle 将空(varchar)字符串存储为NULLs 并且不知何故这与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判断这些列中有值,但是查询它们会返回奇怪的结果。NVLDECODE

一旦我们改变了列,我们就会得到正确的结果:

ALTER TABLE warehouse.table MODIFY (col NULL);
Table altered.
SELECT COUNT(*) …
Run Code Online (Sandbox Code Playgroud)

oracle oracle-10g sap-hana

4
推荐指数
1
解决办法
1049
查看次数

标签 统计

oracle ×2

oracle-10g ×1

oracle-11g ×1

sap-hana ×1

sqlplus ×1