* Wählen Sie aus der Tabelle und noch eine Funktion auf einer einzigen benannten Spalte ausführen

StackOverflow https://stackoverflow.com/questions/639341

Frage

Ich möchte in der Lage sein, alle Spalten in einer Tabelle zurückzukehren oder in der resultierenden Tabelle eines Joins und noch in der Lage sein, ein Datum in einen String mit Namen zu machen.

Zum Beispiel

Wählen Sie ID, BESCHREIBUNG, TO_CHAR (CHANGE_DATE, 'YYYY-MM-DD HH24: MI: SS') AS FORMATED_DATE VON MY_TABLE;

Das ist alles schön und gut für nur diese drei Spalten. Aber, wird der Tisch tatsächlich viel mehr Spalten und kann auf anderen Tabellen verknüpft werden. Ich möchte in der Lage sein, einen Platzhalter zu verwenden, um alle Spalten zu erhalten und noch in der Lage sein, die TO_CHAR Transformation durchzuführen.

So etwas wie: SELECT *, (CHANGE_DATE, 'YYYY-MM-DD HH24: MI: SS') AS FORMATED_DATE VON MY_TABLE;

Wie Sie aus TO_CHAR erraten haben würde, ich bin mit einem Oracle so PLSQL ich verwende.

Also meine konkrete Frage lautet:. Gibt es eine Syntax, die mir erlauben würde, alle Spalten auszuwählen (über *) und noch in der Lage sein, in diesen Spalten eine Funktion auf einzelne Spalte nennen

War es hilfreich?

Lösung

Die nächstgelegene Sie tun können, ist so etwas wie:

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

Andere Tipps

Anstatt Sie Vortrag, hier. Oracle ist ein wenig verspielter als MSSQL darüber, aber das funktionierte für mich.

SELECT  GENERAL.GOREMAL. * , rownum ,aktuelles Datum von GENERAL.GOREMAL

Das folgende ist akzeptabel:

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

oder vielleicht

SELECT compute_foo() as aColumn, *

Die letzte davon wird immer Ihre speziellen Spalten an der gleichen Stelle halten - am Anfang -. Egal wie viele Spalten der Platzhalter bringt in

In SQL Server, was Sie geschrieben perfekt gültig ist, würde ich davon ausgehen, es sollte auch in Oracle arbeiten. Nur wissen Sie Datumsspalte zweimal einmal in seiner ursprünglichen Form und einmal in der Formatierte Form zurückkehren.

FYI SELECT * Bei Verwendung von probally sollte vermieden werden, aber das ist für eine andere Frage: -)

FYI, wenn Sie schließt sich, wählen Sie * ist vor allem vermieden werden, da es besonders Ressourcen-Server und Netzwerk verschwendet, da alle beitreten Felder die gleichen Informationen haben. Junk-Codierung wie „select *“ schafft Performance-Probleme, die sehr schwer zu beheben, wenn jede Abfrage im System schlecht geschrieben. Ich weiß, dass in SQL Server Sie die Spalten über von dem Objekt-Browser ziehen, wäre nicht überrascht, wenn Oracle etwas ähnliches hatte.

Zusätzlich * auswählen können viele, viele spätere Fehler als die Datentabellen ändern erstellen. Es ist eine schlechte Praxis nicht Ihre Spalten in der bestimmten Reihenfolge benennen Sie sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top