Удалить скобки в выводе - PullRequest
0 голосов
/ 10 декабря 2018

Есть ли способ сделать это, кроме как без скобок в выводе?API, принимающий выходные данные, не может с ними справиться.

select a,b,c,d,e from (select n_dead_tup from pg_stat_user_tables where relname = 'table1') as a, 
(select n_dead_tup from pg_stat_user_tables where relname = 'table2') as b, 
(select n_dead_tup from pg_stat_user_tables where relname = 'table3') as c, 
(select n_dead_tup from pg_stat_user_tables where relname = 'table4') as d, 
(select n_dead_tup from pg_stat_user_tables where relname = 'table5') as e;

Этот вывод выглядит примерно так:

 a        |     b     |    c     |     d     |     e     
----------+-----------+----------+-----------+-----------
(7781834) | (7781834) | (483464) | (1426296) | (5452406)

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Заменить Regex, вероятно, будет самым простым подходом:

regexp_replace(a, '\(|\)', '', 'g');

Вам нужна труба для левой или правой пары, и в результате вам нужно будет избегать паренов с косой чертой,G является флагом для удаления всех их примеров из строки

0 голосов
/ 10 декабря 2018

Это происходит потому, что вы выбираете кортежи через имя таблицы, а не столбцы.Вы увидите это, если выберете a.n_dead_tup.Вы можете повторить это для всех таблиц, если хотите, но я предпочитаю решения ниже.

Я бы предложил простое group by:

select relname, n_dead_tup
from pg_stat_user_tables
where relname in ('table1', 'table2', 'table3', 'table4', 'table5');

Или условное агрегирование:

select max(n_dead_tup) filter (relname = 'table1') as table1,
       max(n_dead_tup) filter (relname = 'table2') as table2,
       max(n_dead_tup) filter (relname = 'table3') as table3,
       max(n_dead_tup) filter (relname = 'table4') as table4,
       max(n_dead_tup) filter (relname = 'table5') as table5
from pg_stat_user_tables
where relname in ('table1', 'table2', 'table3', 'table4', 'table5') 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...