5

我正在尝试从存档数据库中获取行以填充测试环境数据库。我需要一个名为“AUDIT_LOG”的特定字段(CLOB)不能为空的行。

我尝试了以下简单的选择语句,但我得到了

ORA-00932: 不一致的数据类型: 预期 - 得到 CLOB

我尝试过的陈述:

SELECT * FROM SIEBEL.S_AUDIT_ITEM WHERE AUDIT_LOG = ''

SELECT * FROM SIEBEL.S_AUDIT_ITEM WHERE AUDIT_LOG != NULL

SELECT * FROM SIEBEL.S_AUDIT_ITEM WHERE AUDIT_LOG = 0

CLOB 中的 NULL 是否等同于空字符串。我有一种感觉,也许长度可以用于列。

谢谢

4

3 回答 3

11

要检查 NULL,无论数据类型如何,都可以使用IS NOT NULLIS NULL

WHERE AUDIT_LOG IS NOT NULL

但请记住,对于 CLOB,anEMPTY_CLOB()没有字符,但与 NULL 不同。如果要排除EMPTY_CLOB(),请使用@user3837669 使用LENGTH比较的答案。

于 2013-01-09T15:47:39.920 回答
7
SELECT * FROM SIEBEL.S_AUDIT_ITEM WHERE length(AUDIT_LOG) > 0
于 2014-07-14T16:14:24.503 回答
0

在 Oracle 10g 中,上述方法都不适合我:我必须以一种糟糕的方式编写它:

select * from SIEBEL.S_AUDIT_ITEM where to_char(AUDIT_LOG) != 'null' ;

于 2019-01-07T11:52:09.630 回答