Spaltentyp mit SQL abrufen
In verschiedenen Datenbankszenarien ist das Verständnis des Datentyps einer bestimmten Spalte in einer Tabelle von entscheidender Bedeutung. Glücklicherweise bietet SQL eine umfassende Lösung zum Abrufen von Spaltentypen über die Ansicht INFORMATION_SCHEMA.COLUMNS. Diese Ansicht stellt Metadaten zu Datenbanktabellen und ihren Spalten bereit, einschließlich der begehrten Datentypinformationen.
Die Spalte DATA_TYPE in INFORMATION_SCHEMA.COLUMNS gibt den Basisdatentyp der Spalte zurück. Bei einigen Datentypen mit Parametrisierungsoptionen wie nvarchar oder datetime2 reicht der Basistyp allein jedoch möglicherweise nicht aus, um die Eigenschaften der Spalte vollständig zu beschreiben.
Um dieses Problem zu beheben, können zusätzliche Spalten in der Ansicht herangezogen werden. Beispielsweise stellen CHARACTER_OCTET_LENGTH für Binary und Varbinary, CHARACTER_MAXIMUM_LENGTH für Char, Nchar, Varchar und Nvarchar, DATETIME_PRECISION für Datetime2 und Datetimeoffset sowie NUMERIC_PRECISION und NUMERIC_SCALE für Dezimal- und numerische Datentypen die erforderlichen Informationen bereit, um den Parameter genau zu rekonstruieren Werte.
Durch Referenzieren dieser Zusatzspalten und Kombinieren ihrer Werte mit dem Basisdatentyp können Sie eine genaue Beschreibung des Spaltentyps erhalten. Die folgende Beispielabfrage veranschaulicht diesen Prozess:
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;
Diese Abfrage fügt sorgfältig die vollständigen Datentypinformationen, einschließlich Parameterwerten und NULL-Zulässigkeitsstatus, in der Spalte FULL_DATA_TYPE zusammen. Durch Ausführen dieser Abfrage können Sie den genauen Datentyp einer bestimmten Spalte abrufen und ein tieferes Verständnis Ihres Datenbankschemas gewinnen.
Das obige ist der detaillierte Inhalt vonWie kann ich den genauen Datentyp einer SQL-Spalte einschließlich Parametern und NULL-Zulässigkeit abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!