PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgresql - zwróć cały wiersz jako tablicę

Może być tak:http://www.sqlfiddle.com/#!1/d41d8 /364

select translate(string_to_array(x.*::text,',')::text,'()','')::text[] 
from pg_tables as x

Jak to działa (inside-out), 5 kroków:

1.:

select x.*::text from pg_tables as x;

Przykładowe wyjście:

|                                                            X |
----------------------------------------------------------------
|                    (pg_catalog,pg_statistic,postgres,,t,f,f) |
|                         (pg_catalog,pg_type,postgres,,t,f,f) |

2. miejsce:

select string_to_array(x.*::text,',') from pg_tables as x;

Przykładowe wyjście:

|                           STRING_TO_ARRAY |
---------------------------------------------
| (pg_catalog,pg_statistic,postgres,,t,f,f) |
|      (pg_catalog,pg_type,postgres,,t,f,f) |

3.:

select string_to_array(x.*::text,',')::text from pg_tables as x;

Przykładowe wyjście:

|                               STRING_TO_ARRAY |
-------------------------------------------------
| {(pg_catalog,pg_statistic,postgres,"",t,f,f)} |
|      {(pg_catalog,pg_type,postgres,"",t,f,f)} |

4.:

select translate( string_to_array(x.*::text,',')::text, '()', '') from pg_tables as x

Przykładowe wyjście:

|                                   TRANSLATE |
-----------------------------------------------
| {pg_catalog,pg_statistic,postgres,"",t,f,f} |
|      {pg_catalog,pg_type,postgres,"",t,f,f} |

Wreszcie:

select translate( string_to_array(x.*::text,',')::text, '()', '')::text[] 
from pg_tables as x

Przykładowe wyjście:

|                               TRANSLATE |
-------------------------------------------
| pg_catalog,pg_statistic,postgres,,t,f,f |
|      pg_catalog,pg_type,postgres,,t,f,f |

Test na żywo:http://www.sqlfiddle.com/#!1/d41d8/ 373

Aby udowodnić, że to działa:

with a as 
(
  select translate( string_to_array(x.*::text,',')::text, '()', '')::text[] as colArray 
  from pg_tables as x
)
select row_number() over(), unnest(colArray)
from a;

Przykładowe wyjście:

| ROW_NUMBER |                  UNNEST |
----------------------------------------
|          1 |              pg_catalog |
|          1 |            pg_statistic |
|          1 |                postgres |
|          1 |                         |
|          1 |                       t |
|          1 |                       f |
|          1 |                       f |
|          2 |              pg_catalog |
|          2 |                 pg_type |
|          2 |                postgres |
|          2 |                         |
|          2 |                       t |
|          2 |                       f |
|          2 |                       f |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Łączenie postgresql z sqlalchemy

  2. Asynchroniczny DBAppender z logbackiem

  3. pg_dump baza danych postgres ze zdalnego serwera, gdy port 5432 jest zablokowany

  4. Wskazówki dotyczące najlepszych praktyk w PostgreSQL VACUUM i ANALYZE

  5. Problem z Postgresem ALTER TABLE