2016-11-11 3 views
2

Je veux une requête pour renvoyer le nom d'en-tête avec le canal délimité. J'ai trouvé quelques références en ligne mais je n'ai pas pu obtenir exactement ce que je voulais.Oracle - Comment écrire une requête pour retourner le nom de l'en-tête de colonne avec un tube délimité?

Je veux quelque chose de retour comme ça, pas besoin de sortie pour un fichier, un résultat de la requête:

colonne1 | colonne2 | colonne3 | column4 | ....... | columnn

J'ai essayé ceci: SELECT/délimité/from tableName où rownum < 1; Exécuter en tant que script en utilisant F5.

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

Mais le résultat est délimité par des virgules et a l'enceinte de guillemets. - Je ne le veux pas.

En fait, j'ai tellement de colonnes, y a-t-il un moyen facile/simple de renvoyer TOUS les en-têtes (délimités par des tuyaux) sans taper manuellement chacun?

Merci pour toute aide !!

+1

Vous pouvez utiliser 'set sqlformat délimité |' au lieu d'inclure l'indicateur dans la requête (au moins dans les versions récentes de SQL Developer/SQLcl). Hélas, il ne semble pas y avoir moyen de s'arrêter si l'on inclut les doubles guillemets - même si le paramètre d'exportation équivalent le fait. Vous pouvez les changer, mais ne pas les supprimer complètement. –

Répondre

5

Ne peut pas vous faire juste:

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

Vous pouvez produire votre requête:

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

Si vous souhaitez obtenir en-tête uniquement pour vos données s'il vous plaît faire:

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

En fait, j'ai tellement de colonnes, est-il un moyen facile de retourner ALL en-tête sans taper manuellement chacun? – azCats

+0

@JerryLi Je vous ai posté une requête qui produira une requête avec toutes les colonnes. – Kacper

+0

@JerryLi Je vous ai également ajouté une requête pour produire une ligne d'en-tête au cas où vous en auriez besoin. – Kacper