Може да е това:http://www.sqlfiddle.com/#!1/d41d8 /364
изберете translate(string_to_array(x.*::text,',')::text,'()','')::text[] от pg_tables като x
Как работи (отвътре навън), 5 стъпки:
1-ви:
изберете x.*::текст от pg_tables като x;
Примерен резултат:
<предварителен код>| X |------------------------------------------------ ----------------| (pg_catalog,pg_statistic,postgres,,t,f,f) || (pg_catalog,pg_type,postgres,,t,f,f) |2-ро:
изберете string_to_array(x.*::text,',') от pg_tables като x;
Примерен резултат:
<предварителен код>| STRING_TO_ARRAY |--------------------------------------------------| (pg_catalog,pg_statistic,postgres,,t,f,f) || (pg_catalog,pg_type,postgres,,t,f,f) |3-то:
изберете string_to_array(x.*::text,',')::text от pg_tables като x;
Примерен резултат:
<предварителен код>| STRING_TO_ARRAY |------------------------------------------------ -| {(pg_catalog,pg_statistic,postgres,"",t,f,f)} || {(pg_catalog,pg_type,postgres,"",t,f,f)} |4-ти:
изберете translate( string_to_array(x.*::text,',')::text, '()', '') от pg_tables като x
Примерен резултат:
<предварителен код>| ПРЕВОД |----------------------------------------------------| {pg_catalog,pg_statistic,postgres,"",t,f,f} || {pg_catalog,pg_type,postgres,"",t,f,f} |Накрая:
изберете translate( string_to_array(x.*::text,',')::text, '()', '')::text[] от pg_tables като x
Примерен резултат:
<предварителен код>| ПРЕВОД |------------------------------------------| pg_catalog,pg_statistic,postgres,,t,f,f || pg_catalog,pg_type,postgres,,t,f,f |Тест на живо:http://www.sqlfiddle.com/#!1/d41d8/ 373
За да докажете, че работи:
с as ( изберете translate( string_to_array(x.*::text,',')::text, '()', '')::text[] като colArray от pg_tables като x) изберете row_number() over(), unnest(colArray)from a;
Примерен резултат:
<предварителен код>| ROW_NUMBER | UNNEST |----------------------------------------| 1 | pg_каталог || 1 | pg_statistic || 1 | postgres || 1 | || 1 | t || 1 | е || 1 | е || 2 | pg_каталог || 2 | pg_type || 2 | postgres || 2 | || 2 | t || 2 | е || 2 | f |