2016-05-18 6 views
1

iはこれらのtable_1有する:複数の条件は、(PL/SQL)

A |B |C |D 
19 | | | 
238| |1 |AS 
45 |23| | 
196| | | 

を私は空のフィールドB、C及びDでレコードを削除する必要があります。

大丈夫ですか?

Delete From table_1 Where C is null and B is null and D is null; 

しかし、私は複数のフィールドを持つ別のテーブルがある場合:A、B、C、D、E、F .... Z、AA、AB ..... BAを...

この場合、何が最良の方法でしょうか?

+0

最良のケースを?すべての列をループし、それらがNULLかどうかを確認するプロシージャを作成します。また、空文字列がない場合は、空の文字列をチェックすることも検討してください。一般的には、あなたのクエリは正常です。 – sagi

+0

私はこれを行う最良の方法があると思います: テーブルからの削除CがnullでBがnullでDがnullでEがnullでFがnullの場合............. .........; –

+0

最適な方法を定義します。何のためのベストな方法?毎日のプロセス?一度の削除? – sagi

答えて

4

あなたは使用することができます。

Delete From table_1 
    Where COALESCE(A,B,C,D,E,F,....,Z,AA,AB,.....,BA) is null; 
+0

素敵な考え、+1 – sagi

+0

申し訳ありません。 ButError SQL:ORA-00932 :データ型が一致しません:CHARが取得されました。NUMBER –

+2

@ANOUK_progフィールドの型が異なる場合(char、int、...)、同じ型のフィールドを別々の合体にグループ化しようとしました。 'COALESCE(intField1、intfield2、....)IS NULLとCOALESCE(CHARField1、CHARfield2、....)はNULLです。 – valex