Oracle-SQL-Syntax - Check mehrere Spalten für NICHT NULL
Gibt es noch weitere prägnante syntax für die überprüfung, ob mehrere Spalten, die nicht null sind? Ich bin auf der Suche zu vereinfachen
weight IS NOT NULL AND
weight_unit IS NOT NULL AND
length IS NOT NULL AND
width IS NOT NULL AND
height IS NOT NULL AND
dimensional_unit IS NOT NULL
in etwas kürzer.
Oracle verwenden, wenn es relevant ist.
- Ich bin mir ziemlich sicher, dass dies ein dupe, aber ich kann nicht scheinen, um es zu suchen.
- Wenn dies ist wahrscheinlich eine Bedingung, die Sie vermeiden wollen (ich.e alle null), dann würde ich vorschlagen, das hinzufügen von NICHT-NULL-Randbedingungen auf den Tisch und dann deine Abfrage wird nie brauchen, um zu überprüfen.
- Stimme mit @DaveRlz: schlage vor, dass Sie separate Tabellen für
ThingWeight
undThingSize
jeweils so, dass, wenn eine Sache, das Gewicht ist unbekannt/nicht zutreffend/etc, dann fügen Sie nicht eine Zeile zu denThingWeight
Tabelle. - scheint ziemlich einfach zu Lesen und auf den Punkt, so, wie Sie es...warum ändern Sie es auf etwas anderes?
- Als mein SQL ist derzeit geschrieben ist, kann ich nur wiederholen, dass snippet vier mal - also ich war auf der Suche nach einer schöneren Lösung.
- Leider ist die Tabelle nicht unter meiner Kontrolle, und ich kann nur davon gelesen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit De Morgan ' s Gesetz:
sparen Sie 20 chars 😉
Soweit ich weiß, gibt es nicht so eine syntax.
Aber wenn alle numerisch sind, können Sie diesen trick verwenden:
A || B
wirdA
wennB
null ist. So 'C1 || C2 || C3 || C4' wäre nicht null, wenn eine Spalte nicht null ist.IS NOT NULL
Bedingungen nicht index freundlich, aber Sie tun es.NULL
Werte gespeichert werden in Indizes also auch, wenn Sie geschehen, um eine 6 Spalte composite index auf alle Spalten von Interesse, es würde nicht wirklich helfen (und wenn Sie hatte eine einzige Spalte Indizes ein 6-Fach-index-join, würde wahrscheinlich werden aus durchgeführt, indem ein scan der gesamten Tabelle). Ich habe eine vage Erinnerung, dass in Oracle-Null-Werte werden nicht gespeichert in Indizes also ich denke, Indizes kann einige Möglichkeit, um nützlicher zu sein hier.Wenn Sie möchten, um zu überprüfen, ob ALLE Spalten, die NICHT NULL sind, dann könnten Sie Verketten der Spalten zuerst und dann Teste mal, IST NICHT NULL.e.g:
Dieser wird überprüfen, ob alle Werte zusammen werden über diese Felder nicht auf eine völlige NULL.
Wenn auch nur testen, ob es vielleicht eine NULL darunter dann denke ich, dass die ursprüngliche Aussage aus der Frage ist immer noch der beste Weg, es zu tun.
'a' || null = 'a'
).Ich versucht dieses problem zu lösen,
Wenn alle Spalten/Variablen sind vom Typ numeric oder varchar2 dann können wir auf folgende Weise in sql, pl/sql :
Hoffe, dies wird Ihnen helfen.
Wie über dieses .....
verbinden(Feld1,Feld2,....,fieldn) ist nicht null
Ich denke, dies würde dem Zweck dienen!!!!