Re: cvs text to quoted cvs text
От | Pavel Stehule |
---|---|
Тема | Re: cvs text to quoted cvs text |
Дата | |
Msg-id | CAFj8pRA5=2zt-dcZxdrm-eMM3=toCrGjwR1v-AO+fHUYPHthDQ@mail.gmail.com обсуждение исходный текст |
Ответ на | cvs text to quoted cvs text (Michael Moore <michaeljmoore@gmail.com>) |
Ответы |
Re: cvs text to quoted cvs text
|
Список | pgsql-sql |
Hi
2016-09-26 21:23 GMT+02:00 Michael Moore <michaeljmoore@gmail.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
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
В списке pgsql-sql по дате отправления: