Wie überprüft man, ob eine Spalte in einer SQL Server-Tabelle vorhanden ist?
Ich hinzufügen müssen, um eine bestimmte Spalte, wenn es nicht vorhanden ist. Ich habe so etwas wie die folgenden, aber es gibt immer false:
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'myTableName'
AND COLUMN_NAME = 'myColumnName')
Wie kann ich prüfen, ob eine Spalte existiert, in eine Tabelle der SQL-Server-Datenbank?
InformationsquelleAutor der Frage Maciej | 2008-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
SQL Server ab 2005:
Martin Smith ' s version ist kürzer:
InformationsquelleAutor der Antwort Mitch Wheat
Einer knapperen version
Den Punkt über die Berechtigungen zum anzeigen von Metadaten bezieht sich auf alle Antworten, die nicht nur dieses eine.
Beachten Sie, dass der erste parameter Tabelle name zu
COL_LENGTH
werden kann in einer, zwei oder drei Teil-name format wie erforderlich.Beispiel verweisen auf eine Tabelle in einer anderen Datenbank ist
Einen Unterschied mit dieser Antwort im Vergleich zu der Metadaten-Ansichten Metadaten-Funktionen wie
COL_LENGTH
immer nur die Rückgabe von Daten über die Geleistete änderungen unabhängig von der Isolationsstufe in Kraft.InformationsquelleAutor der Antwort Martin Smith
Optimieren Sie die unten, um Ihre spezifischen Bedürfnisse anzupassen:
Bearbeiten Angebot Bearbeiten zu Frage: Das sollte funktionieren - nehmen Sie einen vorsichtigen Blick über Ihren code für dumme Fehler; Sie sind Abfragen von INFORMATION_SCHEMA in der gleichen Datenbank wie Ihre Beilage wird angewendet, um zum Beispiel? Sie haben einen Tippfehler in deiner Tabelle/Spalte name in beiden Aussage?
InformationsquelleAutor der Antwort Luke Bennett
Versuchen, diese...
InformationsquelleAutor der Antwort Leon Tayson
Ich würde lieber
INFORMATION_SCHEMA.COLUMNS
über eine system-Tabelle, da Microsoft nicht garantieren, bewahren Sie das system-Tabellen zwischen den Versionen. Zum Beispieldbo.syscolumns
funktioniert immer noch SQL 2008, aber es ist veraltet und könnte jederzeit entfernt werden, in Zukunft.InformationsquelleAutor der Antwort Christian Hayter
Können Sie die Informationen verwenden, die schema-system sichten, um herauszufinden, so ziemlich alles über die Tabellen, die Sie interessiert:
Können Sie auch befragen, Ansichten, gespeicherten Prozeduren und so ziemlich alles über die Datenbank verwenden Sie die Information_schema-sichten.
InformationsquelleAutor der Antwort
Prüfen Sie zunächst, ob die
table
/column
(id
/name
) Kombination existiert indbo.syscolumns
(eine interne SQL Server-Tabelle, enthält die Feld-Definitionen), und wenn nicht, geben Sie die entsprechendenALTER TABLE
Abfrage hinzufügen. Zum Beispiel:InformationsquelleAutor der Antwort mdb
Probieren Sie etwas wie:
Dann verwenden Sie es wie diese:
Sollte es auf beiden SQL Server 2000 & SQL-Server 2005. Nicht sicher über SQL Server 2008, aber nicht sehen, warum nicht.
InformationsquelleAutor der Antwort Matt Lacey
Für die Menschen, die die überprüfung der Spalte Existenz, es fallen zu lassen.
In SQL Server 2016 können Sie neue STERBEN-Anweisungen anstelle von großen
IF
WrapperInformationsquelleAutor der Antwort Pரதீப்
InformationsquelleAutor der Antwort Tuomo Kämäräinen
Ein guter Freund und Kollege von mir zeigte mir wie Sie können auch eine
IF
block mit SQL-FunktionenOBJECT_ID
undCOLUMNPROPERTY
in SQL SERVER 2005+ prüfen, ob eine Spalte. Können Sie etwas ähnlich dem folgenden:Sehen Sie selbst hier
InformationsquelleAutor der Antwort brazilianldsjaguar
Dieser arbeitete für mich in SQL 2000:
InformationsquelleAutor der Antwort Joe M
Versuchen, diese
InformationsquelleAutor der Antwort Douglas Tondo
Brauchte ich ähnlich wie für SQL SERVER 2000 und, wie @Mitch Punkte heraus, dies funktioniert nur inm 2005+.
Sollte es helfen, jemand anderes, das ist was für mich gearbeitet:
InformationsquelleAutor der Antwort FrostbiteXIII
InformationsquelleAutor der Antwort BYRAKUR SURESH BABU
InformationsquelleAutor der Antwort Na30m
InformationsquelleAutor der Antwort Nishad
Einer temp-Tabelle-version des akzeptierte Antwort:
InformationsquelleAutor der Antwort crokusek
Weizen s Antwort ist gut, jedoch übernimmt Sie nicht alle gleicher Tabellenname /Spaltenname Paaren in jedem schema oder einer Datenbank. Machen es sicher, dass die Bedingung der Nutzung dieser...
InformationsquelleAutor der Antwort Daniel Barbalace
Einer der am meisten einfache und verständliche Lösung ist:
InformationsquelleAutor der Antwort Arsman Ahmad
Hier ist ein einfaches script, das ich verwenden, um zu verwalten, Ergänzung von Spalten in der Datenbank:
In diesem Beispiel, die
Name
ist dieColumnName
Hinzugefügt werden undObject_Id
ist dieTableName
InformationsquelleAutor der Antwort UJS
Gibt es mehrere Möglichkeiten, um zu überprüfen, die Existenz einer Spalte.
Ich würde empfehlen die Verwendung
INFORMATION_SCHEMA.COLUMNS
als es ist geschaffen, um zu kommunizieren mit dem Benutzer.Betrachten Sie folgende Tabellen:
und auch einige andere Methoden den Zugang zur Verfügung, um zu überprüfen
system catalog.
Auch, keine Notwendigkeit zu verwenden
SELECT *
einfach testen, indemNULL value
InformationsquelleAutor der Antwort Ali Elmi
Noch eine andere Variante...
InformationsquelleAutor der Antwort Manuel Alves