Frage zur Postgresql-Syntax

HI !

ich wollte Daten einer Tabelle zuweisen und habe folgenden Ausdruck:

UPDATE nodes SET dogbags='yes' WHERE tags@>'vending=excrement_bags';

bekomme aber die Meldung:

Kann mir einer sagen was da falsch ist ? dogbags als Tabelle gibt es !

Gruß Jan :slight_smile:

Schaue mal in der Definition um welchen Typ es sich bei dem Feld handelt. Die Fehlermeldung deutet darauf hin das yes kein zu lässiger Wert ist. vielleicht ist es true false oder 0 1 oder yes no ohne Anführungszeichen

Hi !

guter Hinweis - hatte Text genommen! da das YES steht doch in Hochkomma !

Gruß Jan :slight_smile:

Bei Deiner Art, Code als Zitat wiederzugeben landet der Fehlermeldungs-Pfeil auf meinem Monitor irgendwo bei dogbags=‘yes’. In echt dürfte er deutlich weiter hinten stehen…
Probierst doch mal mit tags@>‘vending=>excrement_bags’.

osm=> select tags from osm_point where tags@>'vending=excrement_bags' limit 5;
FEHLER:  Syntax error near 'e' at position 8
LINE 1: select tags from osm_point where tags@>'vending=excrement_ba...
                                               ^
osm=> select tags from osm_point where tags@>'vending=>excrement_bags' limit 5;
                                                    tags
------------------------------------------------------------------------------------------------------------
 "ref"=>"W6", "amenity"=>"vending_machine", "vending"=>"excrement_bags", "operator"=>"Stadt Augsburg - AWS"
 "amenity"=>"vending_machine", "vending"=>"excrement_bags", "payment:none"=>"yes"
 "amenity"=>"vending_machine", "vending"=>"excrement_bags", "payment:none"=>"yes"
 "waste"=>"excrements", "amenity"=>"vending_machine", "vending"=>"excrement_bags"
 "vending"=>"excrement_bags"
(5 rows)

Grüße, Max

hi !

ok - werde mal nächste mal darauf achten.

Habe das im Zug gerade auch nochmal ausprobiert und mit

UPDATE nodes SET dogbags='yes' WHERE tags@> 'vending=>excrement_bags';

hat es funktioniert.

Hatte mal nach tags und update und postgresql über das smartphone versucht einen Hinweis zu bekommen.

Danke für Deine Hilfe.

Habe dann noch eine Frage die ich mir noch nicht ganz zusammenreimen kann.

Wie kann ich den Ausdruck umbauen damit der neuen Spalte X der Wert eines bestimmten Schlüssels zuweisen kann?

Gruß Jan :slight_smile:

update tabelle set X=tags->'X' where tags?'X';

Warum? neue Spalte erstellen weil dir hstore Probleme macht? Dann kannst du gleich zu osm2pgsql wechseln.

Das mal lesen, obwohl ich nicht begeistert bin: http://www.postgresql.org/docs/9.1/static/hstore.html

Gruss
walter