Ich muss eine Abfrage auf SQL Server schreiben, um die Liste der Spalten in einer bestimmten Tabelle, die zugehörigen Datentypen (mit Länge) und wenn sie nicht null sind, abzurufen. Und ich habe es geschafft, so viel zu tun.
Aber jetzt muss ich auch in derselben Tabelle gegen eine Spalte vorgehen - TRUE
wenn diese Spalte ein Primärschlüssel ist.
Wie mache ich das?
Meine erwartete Ausgabe ist:
Column name | Data type | Length | isnull | Pk
sql
sql-server
sql-server-2005
Shrayas
quelle
quelle
Antworten:
Verwenden Sie user_type_id anstelle von system_type_id, um doppelte Zeilen für einige Spalten zu vermeiden.
Ersetzen
YourTableName
Sie einfach durch Ihren tatsächlichen Tabellennamen - funktioniert für SQL Server 2005 und höher.Falls Sie Schemata verwenden, ersetzen
YourTableName
durch ,YourSchemaName.YourTableName
woYourSchemaName
die tatsächlichen Schemanamen undYourTableName
sind die eigentlichen Tabellennamen.quelle
LEFT OUTER JOIN sys.index_columns ic LEFT OUTER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id ON ic.object_id = c.object_id AND ic.column_id = c.column_id AND i.is_primary_key=1
Die gespeicherte Prozedur sp_columns gibt detaillierte Tabelleninformationen zurück.
quelle
Sie könnten die Abfrage verwenden:
um alle Metadaten zu erhalten, die Sie benötigen, mit Ausnahme der Pk-Informationen.
quelle
In SQL 2012 können Sie Folgendes verwenden:
Dadurch erhalten Sie die Spaltennamen zusammen mit ihren Eigenschaften.
quelle
Versuche dies:
quelle
Um sicherzustellen, dass Sie die richtige Länge erhalten, müssen Sie Unicode-Typen als Sonderfall betrachten. Siehe Code unten.
Weitere Informationen finden Sie unter: https://msdn.microsoft.com/en-us/library/ms176106.aspx
quelle
Wenn Sie Alex 'Antwort erweitern, können Sie dies tun, um die PK-Einschränkung zu erhalten
Ich muss übersehen haben, dass Sie möchten, dass ein Flag anstelle des Namens der PK-Einschränkung feststellt, ob die angegebene Spalte Teil der PK war. Dafür würden Sie verwenden:
quelle
Wählen Sie mit dem Tabellennamen im Abfrageeditor den Namen aus und drücken Sie Alt + F1. Daraufhin werden alle Informationen der Tabelle angezeigt.
quelle
Führen Sie
SELECT *
die obige Anweisung aus, um zu sehen, was information_schema.columns zurückgibt.Diese Frage wurde bereits beantwortet - https://stackoverflow.com/a/11268456/6169225
quelle
Ich bin ein bisschen überrascht, dass niemand etwas erwähnt hat
quelle
quelle
Wenn Sie eine weitere Antwort in den Ring werfen, erhalten Sie folgende Spalten und mehr:
quelle
Suchen Sie anhand Ihres Suchdatentyps nach drei verschiedenen Tabellen in einer Datenbank, welche Spalte sich in welcher Tabelle befindet. Diese Abfrage kann auf 'n' Tabellen erweitert werden.
quelle
Das Kombinationsergebnis für Datentyp und Länge finden und kann in Form von "NULL" und "Nicht null" auf Null gesetzt werden. Verwenden Sie die folgende Abfrage.
Sie finden das Ergebnis wie unten gezeigt.
Danke dir.
quelle
quelle
HINWEIS: IN EINIGER IDE, BEVOR SELECT N FUNKTIONIERT ODER IN EINIGER IDE OHNE N FUNKTIONIERT
quelle
Hier gibt es keinen Primärschlüssel, aber dies kann anderen Benutzern helfen, die nur einen Tabellennamen mit Feldnamen und grundlegenden Feldeigenschaften haben möchten
quelle
Ich habe gerade marc_s "Präsentation fertig" gemacht:
quelle