Hallo!
Folgendes Problem: Ich habe eine lange Liste an Datensätzen und will prüfen, welche davon bestimmten Kriterien genügen, also bei denen die entsprechenden Felder nicht NULL sind. ich dachte, dies lässt sich am besten mit ALL lösen kriege aber die Syntax nicht gebacken. Im Beispiel unten hab ich versucht das nachzustellen und frage nach ob alles 1 ist, das funktioniert auch nur wie baue ich statt dessen ein IS NOT NULL ein? Es klappt wenn ich alle Felder in Bool verwandle und nach TRUE frage, ich könne auch im übergeordneten alles, was NULL ist, in einen unsinnigen Wert verwandeln, was ich aber gerne wegen Unschönheit und eventueller Widersprüchlichkeit vermeiden möchte. Auch könnte man jedes Feld einzeln abfragen, da das aber im Realen noch verschiedene Kontexte mit unterschiedlichen Bedingungen abbilden soll, wird das völlig unübersichtlich.
Frage also: Wie mache ich ‘is not null all(Feld1, Feld2, Feld3)’?
Kleines Beispiel mit Abfrage nach 1:
create table test_any (
id serial primary key,
v1 int,
v2 int,
v3 int);
insert into test_any(v1, v2, v3) values( 1, 1, 1);
insert into test_any(v1, v2, v3) values( 1, null, 1);
insert into test_any(v1, v2, v3) values( 1, 1, null);
insert into test_any(v1, v2, v3) values( null, 1, 1);
insert into test_any(v1, v2, v3) values( 1, 1, 1);
insert into test_any(v1, v2, v3) values(null, null, null);
select id
from test_any
where 1 = all(array[v1, v2, v3]);
Grüße und Dank Im Voraus
Uwe