Wie würde ich die Spaltennamen einer Tabelle mit SQL Server 2008 zurückgeben? dh eine Tabelle enthält diese Spalten-ID, Name, Adresse, Land und ich möchte diese als Daten zurückgeben.
sql
sql-server
tsql
Belliez
quelle
quelle
Dies ist der einfachste Weg
quelle
Etwas wie das?
quelle
Eine Methode besteht darin, syscolumns abzufragen:
quelle
Objtype
Spalte jedoch überflüssig :)Dies scheint etwas einfacher zu sein als die obigen Vorschläge, da die Funktion OBJECT_ID () zum Auffinden der Tabellen-ID verwendet wird. Jede Spalte mit dieser ID ist Teil der Tabelle.
Ich verwende normalerweise eine ähnliche Abfrage, um festzustellen, ob eine Spalte vorhanden ist, von der ich weiß, dass sie Teil einer neueren Version ist. Es ist dieselbe Abfrage mit dem Zusatz von {AND name = 'YOUR_COLUMN'} zur where-Klausel.
quelle
Versuche dies
...............................................
quelle
WHERE 1=2
und es weiterhin die Spalten-Metadaten zurückgibt . Wenn Sie eine programmatische Schnittstelle wie ODBC verwenden, können Sie auf diese Spalteninformationen als Liste / Array über das Cursorobjekt im Programm zugreifen, nach dem ich gesucht habe. In einem reinen SQL-Kontext ist dies möglicherweise nicht sinnvoll, aber es ist ein prägnanter Ansatz, wenn eine Verbindung zu einer Datenbank über Python / Java / C / etc. Hergestellt wird.Das Folgende scheint wie die erste vorgeschlagene Abfrage oben zu sein, aber manchmal müssen Sie die Datenbank angeben, damit sie funktioniert. Beachten Sie, dass die Abfrage auch ohne Angabe von TABLE_SCHEMA funktionieren sollte:
quelle
ich benutze
quelle
Warum versuchen Sie es nicht einfach so:
Die gesamte Liste der Spalten wird im Skript angegeben. Kopieren Sie es und verwenden Sie die Felder nach Bedarf.
quelle
"I want to return these as data"
, während Ihre Antwort die Werte erhält, möchte das OP die Daten wahrscheinlich zur Laufzeit.USE[Database] SELECT TABLE_NAME,TABLE_SCHEMA,[Column_Name],[Data_type] FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='dbo'
quelle
quelle
Ich bin nicht sicher, ob der Wert von syscolumns.colid mit dem Wert von 'ORDINAL_POSITION' übereinstimmt, der als Teil von sp_columns zurückgegeben wird, aber im Folgenden verwende ich ihn auf diese Weise - ich hoffe, ich informiere mich nicht falsch ...
Hier ist eine kleine Abweichung von einigen der anderen Antworten, die ich gefunden habe - ich verwende diese, weil die 'Position' oder Reihenfolge der Spalte in der Tabelle in meiner Anwendung wichtig ist - ich muss im Grunde wissen, wie Spalte (n) heißt ? '
sp_columns gibt eine ganze Reihe von irrelevanten Dingen zurück, und ich bin handlicher mit ausgewählten als T-SQL-Funktionen, also bin ich diesen Weg gegangen:
quelle
Während die Antwort von @Gulzar Nazim großartig ist, ist es wahrscheinlich einfacher, den Datenbanknamen in die Abfrage aufzunehmen, was durch die folgende SQL erreicht werden könnte.
quelle
Mit dem folgenden Code können Sie alle Spaltennamen drucken. Sie können den Code auch ändern, um andere Details in einem beliebigen Format zu drucken
Ausgabe
Verwenden Sie den folgenden Code, um denselben Code zum Drucken der Tabelle und ihres Spaltennamens wie die C # -Klasse zu verwenden:
Ausgabe:
quelle
Ich benutze nur eine Abfrage wie Martin Smith erwähnt, nur etwas kürzer:
quelle
quelle
Da SysColumns veraltet ist , verwenden Sie
Sys.All_Columns
:Select * From Sys.Types
wirduser_type_id = ID
vom Typ ergeben. Dies ist innerhalb der Datenbank eindeutig. Für Systemdatentypen :user_type_id = system_type_id
.quelle
quelle
Wenn Sie mit postgresql arbeiten, besteht die Möglichkeit, dass mehr als ein Schema eine Tabelle mit demselben Namen hat. In diesem Fall wenden Sie die folgende Abfrage an
quelle
quelle