Heim > Datenbank > MySQL-Tutorial > Wie kann ich den genauen Datentyp einer SQL-Spalte einschließlich Parametern und NULL-Zulässigkeit abrufen?

Wie kann ich den genauen Datentyp einer SQL-Spalte einschließlich Parametern und NULL-Zulässigkeit abrufen?

Susan Sarandon
Freigeben: 2024-12-26 12:33:11
Original
693 Leute haben es durchsucht

How Can I Retrieve the Precise Data Type of a SQL Column Including Parameters and Nullability?

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage