From: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com> |
---|---|
To: | Michael Moore <michaeljmoore(at)gmail(dot)com> |
Cc: | postgres list <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: cvs text to quoted cvs text |
Date: | 2016-09-26 19:33:22 |
Message-ID: | CAFj8pRA5=2zt-dcZxdrm-eMM3=toCrGjwR1v-AO+fHUYPHthDQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi
2016-09-26 21:23 GMT+02:00 Michael Moore <michaeljmoore(at)gmail(dot)com>:
> 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
Regards
Pavel
> thanks,
> Mike
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Moore | 2016-09-26 20:09:08 | Re: cvs text to quoted cvs text |
Previous Message | Igor Neyman | 2016-09-26 19:28:09 | Re: cvs text to quoted cvs text |