SQL-Anweisung zur Bestimmung des Spaltendatentyps
Im Bereich der Datenbankverwaltung ist das Verständnis der mit Tabellenspalten verbundenen Datentypen von entscheidender Bedeutung. SQL bietet einen umfassenden Einblick in die Struktur und Eigenschaften von Tabellen. Dazu gehört die Möglichkeit, Informationen über Spaltendatentypen mithilfe einer bestimmten SQL-Anweisung abzurufen.
INFORMATION_SCHEMA.COLUMNS
Die Ansicht INFORMATION_SCHEMA.COLUMNS dient als leistungsstarkes Tool zum Abfragen Metadaten über Tabellen innerhalb einer Datenbank. Diese Ansicht stellt verschiedene Details zu Spalten bereit, einschließlich ihrer Datentypen. Mithilfe der Spalte DATA_TYPE können Sie den Datentyp einer bestimmten Spalte bestimmen.
Überlegungen zur Parametrisierung
Beachten Sie, dass die Spalte DATA_TYPE in INFORMATION_SCHEMA.COLUMNS möglicherweise nicht immer liefert alle notwendigen Informationen für parametrisierte Datentypen. Es enthält beispielsweise keine Argumente für Parameter, was zu potenziellen Problemen mit dem Spaltenverhalten führen kann.
Um dieses Problem zu beheben, wird empfohlen, zusätzliche Spalten in der Ansicht INFORMATION_SCHEMA.COLUMNS zu konsultieren, z. B.:
Durch Kombination dieser Spalten können Sie die vollständige Parametrisierung der Daten rekonstruieren Typ.
Beispielabfrage
Die folgende SQL-Abfrage zeigt, wie die vollständigen Datentypinformationen für eine angegebene Spalte mithilfe der Ansicht INFORMATION_SCHEMA.COLUMNS abgerufen werden:
WITH q AS ( SELECT c.TABLE_SCHEMA, c.TABLE_NAME, c.ORDINAL_POSITION, c.COLUMN_NAME, c.DATA_TYPE, CASE WHEN c.DATA_TYPE IN ( N'binary', N'varbinary' ) THEN ( CASE c.CHARACTER_OCTET_LENGTH WHEN -1 THEN N'(max)' ELSE CONCAT( N'(', c.CHARACTER_OCTET_LENGTH, N')' ) END ) WHEN c.DATA_TYPE IN ( N'char', N'varchar', N'nchar', N'nvarchar' ) THEN ( CASE c.CHARACTER_MAXIMUM_LENGTH WHEN -1 THEN N'(max)' ELSE CONCAT( N'(', c.CHARACTER_MAXIMUM_LENGTH, N')' ) END ) WHEN c.DATA_TYPE IN ( N'datetime2', N'datetimeoffset' ) THEN CONCAT( N'(', c.DATETIME_PRECISION, N')' ) WHEN c.DATA_TYPE IN ( N'decimal', N'numeric' ) THEN CONCAT( N'(', c.NUMERIC_PRECISION, N',', c.NUMERIC_SCALE, N')' ) END AS DATA_TYPE_PARAMETER, CASE c.IS_NULLABLE WHEN N'NO' THEN N' NOT NULL' WHEN N'YES' THEN N' NULL' END AS IS_NULLABLE2 FROM INFORMATION_SCHEMA.COLUMNS AS c ) SELECT q.TABLE_SCHEMA, q.TABLE_NAME, q.ORDINAL_POSITION, q.COLUMN_NAME, CONCAT( q.DATA_TYPE, ISNULL( q.DATA_TYPE_PARAMETER, N'' ), q.IS_NULLABLE2 ) AS FULL_DATA_TYPE FROM q WHERE q.TABLE_SCHEMA = 'yourSchemaName' AND q.TABLE_NAME = 'yourTableName' AND q.COLUMN_NAME = 'yourColumnName' ORDER BY q.TABLE_SCHEMA, q.TABLE_NAME, q.ORDINAL_POSITION;
Beispielausgabe
Das Ausführen der Abfrage würde eine umfassende Ausgabe zurückgeben Beschreibung des Datentyps für die angegebene Spalte, einschließlich ihrer Parameter und NULL-Zulässigkeit. Hier ist eine Beispielausgabe:
TABLE_SCHEMA | TABLE_NAME | ORDINAL_POSITION | COLUMN_NAME | FULL_DATA_TYPE |
---|---|---|---|---|
yourSchemaName | yourTableName | 1 | yourColumnName | nvarchar(max) NOT NULL |
Das obige ist der detaillierte Inhalt vonWie bestimme ich den Datentyp einer SQL-Spalte mithilfe von INFORMATION_SCHEMA?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!