[FOSSGIS-Talk] Leere Arrays in PostgreSQL abfragen

R. Reiterer r.reiterer at posteo.at
Mo Mär 5 10:10:27 CET 2018


Hallo Frank,

ich habe mein Problem nun mit folgender WHERE Klausel gelöst:

WHERE TRUE = ALL (SELECT UNNEST(feld) IS NULL)

Das scheint nach ersten Tests auch zu funktionieren ;)

Schöne Grüße,

Reinhard

Am 27.02.2018 14:22 schrieb R. Reiterer:
> Achso, ich habe kein leeres Array, sondern ein Array mit einem
> einzelnen Nullwert. Aus dieser Perspektive wird manches klarer.
> 
> Schöne Grüße, Reinhard
> 
> Am 27.02.2018 13:37 schrieb R. Reiterer:
>> Hallo Frank,
>> 
>> danke für deine Antwort. Die {NULL} Werte stammen aus einer räumlichen
>> Abfrage mit Geometrien aus einer zweiten Tabelle. Wo die WHERE
>> Bedingung nicht erfüllt ist, erhalte ich {NULL}. Ansonsten wird aus
>> den Werden der betroffenen Geometrien aus Tabelle 2 ein Array erzeugt.
>> 
>> Dein Lösungsvorschlag erscheint vielversprechend. Ich kann ihn am WE
>> testen und melde mich dann nochmal.
>> 
>> Schöne Grüße, Reinhard
>> 
>> Am 27.02.2018 09:44 schrieb Frank Broniewski:
>>> Moin,
>>> 
>>> '{NULL}' ist irgendwie komisch, aber egal. Wenn es dir genau nur um
>>> '{NULL}' geht, und nicht um irgendeinen NULL Wert im Array, kannst du
>>> das folgendermaßen lösen:
>>> 
>>> Folgende Tabelle als Test:
>>> CREATE TABLE public.test_empty_array
>>> (
>>>   id integer NOT NULL DEFAULT 
>>> nextval('test_empty_array_id_seq'::regclass),
>>>   text character varying[],
>>>   zahl bigint[],
>>>   CONSTRAINT pk_test_id PRIMARY KEY (id)
>>> )
>>> 
>>> Hier die Werte
>>> 1;"{foo,bar,baz}";"{1,2,3,4,5}"
>>> 2;"{}";"{}"
>>> 3;"{NULL}";"{NULL}"
>>> 
>>> SQL
>>> select *, text[1] is null, zahl[1] is null from test_empty_array;
>>> 
>>> Abfrageergebnis
>>> 1;"{foo,bar,baz}";"{1,2,3,4,5}";f;f
>>> 2;"{}";"{}";t;t
>>> 3;"{NULL}";"{NULL}";t;t
>>> 
>>> 'Feld[1] is null' sollte also dein Problem lösen
>>> 
>>> HTH
>>> Frank
>>> 
>>> Dipl. Geogr. Frank Broniewski
>>> Waldhölzbacher Str. 51
>>> 66679 Losheim am See
>>> 06872 509 068 4
>>> 0176 611 26 9 2 6
>>> www.frankbroniewski.com
>>> 
>>> -----Ursprüngliche Nachricht-----
>>> Von: FOSSGIS-Talk-Liste 
>>> [mailto:fossgis-talk-liste-bounces at fossgis.de]
>>> Im Auftrag von R. Reiterer
>>> Gesendet: Montag, 26. Februar 2018 23:17
>>> An: Fossgis talk liste <fossgis-talk-liste at fossgis.de>
>>> Betreff: [FOSSGIS-Talk] Leere Arrays in PostgreSQL abfragen
>>> 
>>> Hallo,
>>> 
>>> ich habe in PostgreSQL/PostGIS leere (?) Arrays, welche in der QGIS
>>> DB-Verwaltung als {NULL} dargestellt werden.
>>> 
>>> Leider gelingt es mir nicht, diese Datensätze mit {NULL} Arrays 
>>> abzufragen.
>>> 
>>> Was ich bereits probiert habe:
>>> 
>>> WHERE feld = '{}' -- cannot switch from manual field specification to
>>> automatic field numbering WHERE array_length(feld, 1) = 0 WHERE
>>> cardinality(feld) = 0
>>> 
>>> array_lenght(feld, 1) und cardinality(feld) geben jeweils '1' für
>>> {NULL} Arrays aus.
>>> 
>>> Hat jemand einen Tipp für mich?
>>> 
>>> Schöne Grüße und vielen Dank, Reinhard
>>> 
>>> 
>>> --
>>> ....................................................................
>>> FOSSGIS 2018, die Konferenz für Open Source GIS mit OpenData und
>>> OpenStreetMap in Bonn!
>>> 21.-24. März 2018 an der Universität Bonn 
>>> https://fossgis-konferenz.de/2018/
>>> 18.-25. März OSGeo Code Sprint im BaseCamp Bonn
>>> https://wiki.osgeo.org/wiki/OSGeo_Code_Sprint_2018
>>> 
>>> FOSSGIS Veranstaltungen 2018
>>> https://www.fossgis.de/node/306
>>> 
>>> FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
>>> GIS-Bereich und Freier Geodaten!
>>> https://www.fossgis.de/             https://twitter.com/fossgis_eV
>>> 
>>> ____________________________________________________________________
>>> FOSSGIS-Talk-Liste mailing list
>>> FOSSGIS-Talk-Liste at fossgis.de
>>> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
>> --
>> ....................................................................
>> FOSSGIS 2018, die Konferenz für Open Source GIS mit OpenData und
>> OpenStreetMap in Bonn!
>> 21.-24. März 2018 an der Universität Bonn
>> https://fossgis-konferenz.de/2018/
>> 18.-25. März OSGeo Code Sprint im BaseCamp Bonn
>> https://wiki.osgeo.org/wiki/OSGeo_Code_Sprint_2018
>> 
>> FOSSGIS Veranstaltungen 2018
>> https://www.fossgis.de/node/306
>> 
>> FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
>> GIS-Bereich und Freier Geodaten!
>> https://www.fossgis.de/             https://twitter.com/fossgis_eV
>> 
>> ____________________________________________________________________
>> FOSSGIS-Talk-Liste mailing list
>> FOSSGIS-Talk-Liste at fossgis.de
>> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
> --
> ....................................................................
> FOSSGIS 2018, die Konferenz für Open Source GIS mit OpenData und
> OpenStreetMap in Bonn!
> 21.-24. März 2018 an der Universität Bonn
> https://fossgis-konferenz.de/2018/
> 18.-25. März OSGeo Code Sprint im BaseCamp Bonn
> https://wiki.osgeo.org/wiki/OSGeo_Code_Sprint_2018
> 
> FOSSGIS Veranstaltungen 2018
> https://www.fossgis.de/node/306
> 
> FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
> GIS-Bereich und Freier Geodaten!
> https://www.fossgis.de/             https://twitter.com/fossgis_eV
> 
> ____________________________________________________________________
> FOSSGIS-Talk-Liste mailing list
> FOSSGIS-Talk-Liste at fossgis.de
> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste


Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste