[FOSSGIS-Talk] Leere Arrays in PostgreSQL abfragen

R. Reiterer r.reiterer at posteo.at
Di Feb 27 13:37:02 CET 2018


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


Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste