Chuqa hat geschrieben:Hi,
Ich muss also irgendwie die Anführungszeichen aus meinen generierten String bekommen. Kann mir jemand sagen, wie ich das machen kann?
gruß chuqa
Mir ist grad nicht klar, wo die reinkommen. Vielleicht hilft Dir aber folgendes weiter:
- Code: Alles auswählen
test=*# select * from foo;
id | a | b
----+---+---
1 | 1 | 1
2 | 1 | 2
3 | 2 | 2
4 | 2 | 3
5 | 2 | 2
(5 rows)
create or replace function ff() returns text as $$
declare
r record;
t text;
t2 text;
begin
select into t2 array_to_string(ARRAY(select id from foo), ', ');
t2 := '(' || t2 || ')';
t := '(';
for r in select id from foo loop
t := t || 'id=' || r.id || ' or ';
end loop;
t := regexp_replace(t, ' or $', '');
t := t || ')';
return t || ' oder besser ' || t2;
end;
$$ language plpgsql;
test=*# select * from ff();
ff
--------------------------------------------------------------------
(id=1 or id=2 or id=3 or id=4 or id=5) oder besser (1, 2, 3, 4, 5)
(1 row)
Die Art, wie ich t2 bastle, sieht vielleicht a bissl eleganter aus, und du kannst das in Deinen selects nachfolgend als ... in (..) einbauen. Das wird dann zwar eh wieder zu einem OR erweitert, aber imho sieht es erst mal aufgeräumter aus.
Warum verwendest Du kein Dollar-Quoting? Vielleicht hängt Dein Problem damit zusammen, daß Du es nicht nimmst, und da was flasch gequotet ist. Bin grad zu faul, das näher zu untersuchen...
Andreas