5

テスト環境の DB に入力するために、アーカイブ データベースから行を取得しようとしています。CLOB である「AUDIT_LOG」という特定のフィールドが空の null にならない行が必要です。

次の単純な選択ステートメントを試しましたが、

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 NULLまたはを使用します。IS 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 に答える