Wie listen Sie für die verschiedenen gängigen Datenbanksysteme alle Spalten in einer Tabelle auf?Wie liste ich alle Spalten in einer Tabelle auf?
Antwort
Für Oracle (PL/SQL)
SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'
Für MySQL
SHOW COLUMNS FROM table_name
Für MySQL/Oracle, Verwendung:
DESCRIBE name_of_table;
+1. Dadurch werden alle Spalten in der Tabelle angezeigt und Details zu den einzelnen Spalten angezeigt. – Navigatron
Diese Lösung ist für MYSQL nicht MSSQL –
Das funktioniert auch für Oracle – dmvianna
MS SQL Server:
sp_columns [Tabellenname]
Für MS SQL Server:
select * from information_schema.columns where table_name = 'tableName'
Die Spalte von Interesse wäre hier COLUMN_NAME. – Buggieboy
Dies sollte auf vielen DBMS funktionieren. Die 'information_schema.columns' Systemansicht ist Teil des' ANSI SQL' Standards ([link] (http://en.wikipedia.org/wiki/Information_schema)). –
gute Antwort, aber um Duplikate zu vermeiden, würde ich verwenden: 'wählen Sie COLUMN_NAME aus information_schema.columns, wo Tabellenname = 'Tabellenname' und Tabellenname = 'Datenbankname'' – billynoah
SQL Server
SELECT
c.name
FROM
sys.objects o
INNER JOIN
sys.columns c
ON
c.object_id = o.object_id
AND o.name = '[Table Name]'
oder
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = '[Table Name]'
Die zweite Möglichkeit, ein ANSI-Standard ist und deshalb sollte Arbeit auf alle ANSI konforme Datenbanken.
Keine von diesen funktionieren wie geschrieben (oder zumindest impliziert, wie ich es lese) für MS SQL Server. In beiden Fällen speichert die Tabellenname-Spalte den Namen _without_ any '[' '] drumherum, sodass die Abfrage sie nicht verwenden darf, sondern nur den Namen der einfachen Tabelle. Wenn das nicht die Absicht des OP war, dann sollte man sich dessen zumindest bewusst sein. – JonBrave
@JonBrave - das ist richtig, die eckigen Klammern waren da um zu implizieren _ "fügen Sie Ihren Tabellennamen hier ein" _ :) –
Als eckige Klammern, lese ich es als "_insert Ihren Tabellennamen in eckigen Klammern (wegen potenziell reserviertem Wort) here_ ", und dann keine Übereinstimmungen :) Vielleicht hätte BNF'
Youd wahrscheinlich die Oracle-Abfrage von column_id bestellen möchten –
Für Oracle gilt auch 'DESCRIBE name_of_table'. – Pigueiras
Verwenden Sie; Spalten in wie '%' anzeigen; Lassen Sie nur die Spalten auflisten, die mit dem angegebenen Präfix beginnen. Die Winkel natürlich auslassen. –
rstackhouse