I have some input parameters on a function that will by use in dynamic sql as part of an IN list. For example: 'select val from mytab where zzz in ('||csv_input_parm::text||')';
The problem is that csv_input_parm is formatted like: [THIS,THAT,THE OTHER] while the IN list would need ['THIS','THAT','THE OTHER'] brackets not included.
I came up with this approach to do the conversion: select ''''||array_to_string(string_to_array('THIS,THAT,THE OTHER',','),''',''')||'''' rslt
It gets the job done, but it's ugly. Is there a way that is not ugly?
are you need it? You can use USING clause, when you use dynamic SQL.
postgres=# DO $$ DECLARE x text[] = '{AHOJ,NAZDAR}'; r text; BEGIN FOR r IN EXECUTE 'SELECT UNNEST($1)' USING x LOOP RAISE NOTICE '>>>%<<<', r; END LOOP; END; $$; NOTICE: >>>AHOJ<<< NOTICE: >>>NAZDAR<<< DO