【问题标题】:Oracle SQL Select where clob field is not empty/nullOracle SQL Select where clob 字段不为空/null
【发布时间】:2013-01-09 15:41:04
【问题描述】:

我正在尝试从存档数据库中获取行以填充测试环境数据库。我需要一个名为“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 是否等同于空字符串。我有一种感觉,也许长度可以用于列。

谢谢

【问题讨论】:

    标签: sql oracle10g clob


    【解决方案1】:

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

    WHERE AUDIT_LOG IS NOT NULL
    

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

    【讨论】:

    • 谢谢,我仍然认为我有时会使用 mysql。
    • 为了安全起见,我们是否应该同时检查长度和空值? length(plussgeojson) > 0 or plussgeojson is null ... 或者检查长度是否也排除空值?
    【解决方案2】:
    SELECT * FROM SIEBEL.S_AUDIT_ITEM WHERE length(AUDIT_LOG) > 0
    

    【讨论】:

      【解决方案3】:

      以上方法在 Oracle 10g 中都不适合我: 我不得不用不好的方式写它:

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

      【讨论】:

        猜你喜欢
        • 2021-12-09
        • 2013-07-31
        • 2019-02-03
        • 2012-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-24
        • 1970-01-01
        相关资源
        最近更新 更多