Domanda

Vorrei poter restituire tutte le colonne in una tabella o nella tabella risultante di un join e riuscire comunque a trasformare una data in una stringa per nome.

Ad esempio

Seleziona ID, DESCRIPTION, TO_CHAR (CHANGE_DATE, 'YYYY-MM-DD HH24: MI: SS') COME FORMATED_DATE DA MY_TABLE;

Questo va bene e va bene solo per queste tre colonne. Tuttavia, la tabella avrà in realtà molte più colonne e potrebbe essere unita su altre tabelle. Vorrei poter utilizzare un carattere jolly per ottenere tutte le colonne e poter comunque eseguire la trasformazione TO_CHAR.

Qualcosa del tipo: SELEZIONA *, (CHANGE_DATE, 'AAAA-MM-GG HH24: MI: SS') COME FORMATED_DATE DA MY_TABLE;

Come avresti intuito da TO_CHAR, sto usando un Oracle, quindi sto usando PLSQL.

Quindi la mia domanda specifica è: esiste una sintassi che mi consenta di selezionare tutte le colonne (tramite *) e di poter ancora chiamare una funzione su una singola colonna all'interno di quelle colonne.

È stato utile?

Soluzione

Il più vicino che potresti fare è qualcosa del tipo:

SELECT 
     MY_TABLE.*, 
     (CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS FORMATED_DATE 
FROM MY_TABLE;

Altri suggerimenti

Invece di insegnarti, qui. Oracle è un po 'più agitato di MSSQL, ma questo ha funzionato per me.

SELEZIONARE  GENERAL.GOREMAL. * , rownum ,data odierna da GENERAL.GOREMAL

È accettabile quanto segue:

SELECT T1.*, T2.*, x + y as some_Z

o forse

SELECT compute_foo() as aColumn, *

L'ultimo dei quali manterrà sempre le tue colonne speciali nello stesso posto - all'inizio - non importa quante colonne porta il carattere jolly.

In SQL Server ciò che hai scritto è perfettamente valido, suppongo che dovrebbe funzionare anche in Oracle. Tieni presente che restituirai la colonna della data di ritorno due volte una volta nella sua forma originale e una volta nella forma Formata.

FYI L'uso di SELECT * dovrebbe probabilmente essere evitato, ma è per un'altra domanda :-)

Cordiali saluti, se si dispone di join, selezionare * è particolarmente da evitare in quanto spreca risorse del server e della rete soprattutto perché tutti i campi di join hanno le stesse informazioni. Codifica spazzatura come " seleziona * " crea problemi di prestazioni che diventano molto difficili da risolvere quando ogni query nel sistema è scritta male. So che in SQL Server puoi trascinare le colonne dal browser degli oggetti, non sarei sorpreso se ORacle avesse qualcosa di simile.

Inoltre, selezionare * può creare molti, molti bug successivi quando cambiano le tabelle dei dati. È una cattiva pratica non nominare le colonne nell'ordine specifico desiderato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top