2016-05-18 5 views
1

Ich habe diese table_1:Mehrere Bedingungen in denen (PL/SQL)

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

I Datensätze mit Feldern B, C und D leer löschen müssen.

Ist es in Ordnung?

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

Aber wenn ich eine andere Tabelle mit mehreren Feldern: A, B, C, D, E, F .... Z, AA, AB ..... BA ...

Was wäre in diesem Fall der beste Weg?

+0

besten Fall? Machen Sie eine Prozedur, die alle Spalten durchläuft und prüft, ob sie Nullwerte sind. Ziehen Sie auch in Betracht, nach leeren Strings zu suchen, wenn dieser Fall möglich ist. Im Allgemeinen ist Ihre Anfrage in Ordnung. – sagi

+0

Ich denke, dass es eine beste Möglichkeit gibt, dies zu tun: Delete From table_1 Wo C ist null und B ist null und D ist null und E ist null und F ist null ............. .........; –

+0

Definieren Sie den besten Weg. Der beste Weg für was? Täglicher Prozess? Eine einmalige Löschung? – sagi

Antwort

4

können Sie verwenden:

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

Nice thinking, +1 – sagi

+0

Entschuldigung. ButError SQL: ORA-00932 : Inkonsistente Datentypen: CHAR erwartet wurde NUMBER –

+2

@ANOUK_prog, wenn Felder unterschiedlicher Typen (char, int, ...) versuchen, Felder mit demselben Typ zu verschiedenen Koaleszen zu gruppieren. 'COALESCE (intField1, intfield2, ....) IST NULL und KOALESSE (CHARField1, CHARfield2, ....) IST NULL' – valex