Oracle - Как написать запрос, чтобы вернуть имя заголовка столбца с разделителями каналов?

Я хочу, чтобы запрос возвращал имя заголовка с разделителями каналов. Я нашел ссылку в Интернете, но не смог получить именно то, что хочу.

Я хочу, чтобы что-то возвращалось, как это, не нужно выводить файл, просто результат запроса:

столбец1|столбец2|столбец3|столбец4|.......|столбецN

Я попробовал это: SELECT /с разделителями/ from tableName, где rownum‹1; Запустить как скрипт с помощью F5.

"UPC", "UPC_DESCRIPTION", "ITEM_CODE", "DEPT_CODE"

Но результат разделен запятыми и заключен в кавычки. -- Я не хочу этого.

На самом деле у меня так много столбцов, есть ли простой способ/простой запрос для возврата ВСЕХ заголовков (с разделителями) без ручного ввода каждого?

Спасибо за любую помощь!!


person azCats    schedule 11.11.2016    source источник
comment
Вы можете использовать set sqlformat delimited | вместо включения подсказки в запрос (по крайней мере, в последних версиях SQL Developer/SQLcl). Увы, похоже, нет никакого способа остановиться, если включить вложения с двойными кавычками, хотя эквивалентная настройка экспорта делает это. Вы можете изменить их, но не удалить полностью.   -  person Alex Poole    schedule 11.11.2016


Ответы (1)


Разве вы не можете просто сделать:

select col1 || '|' || col2 || '|' || col3 || '|' || col4 || '|' || col5
  from table;

Вы можете создать свой запрос:

select 'select ' || LISTAGG(column_name , ' || ''|'' || ') within group (order by column_id) || ' from my_table' 
  from user_tab_columns 
  where table_name = 'MY_TABLE';

Если вы хотите получить только заголовок для ваших данных, выполните следующие действия:

select LISTAGG(column_name, '|') within group (order by column_id)
      from user_tab_columns 
      where table_name = 'MY_TABLE';
person Kacper    schedule 11.11.2016
comment
На самом деле у меня так много столбцов, есть ли простой способ вернуть ВСЕ заголовки без ручного ввода каждого? - person azCats; 11.11.2016
comment
@JerryLi Я отправил вам запрос, который создаст запрос со всеми столбцами. - person Kacper; 11.11.2016
comment
@JerryLi Я также добавил вам запрос на создание строки заголовка, если вам это нужно. - person Kacper; 11.11.2016
comment
Спасибо, второй запрос, который вы разместили, возвращает именно то, что я хочу. - person azCats; 11.11.2016
comment
В LISTAGG() вполне вероятно, что в большинстве случаев столбцы должны отображаться в том порядке, в котором они появляются в таблице, а не в алфавитном порядке имен столбцов. Это легко сделать — в ORDER BY упорядочить по COLUMN_ID (а не по COLUMN_NAME). - person mathguy; 11.11.2016