Heim > Datenbank > MySQL-Tutorial > Wie rufe ich vollständige Spaltendatentypen einschließlich Parametern und NULL-Zulässigkeit in SQL ab?

Wie rufe ich vollständige Spaltendatentypen einschließlich Parametern und NULL-Zulässigkeit in SQL ab?

Mary-Kate Olsen
Freigeben: 2024-12-28 03:50:10
Original
405 Leute haben es durchsucht

How to Retrieve Complete Column Data Types Including Parameters and Nullability in SQL?

So rufen Sie den Spaltentyp mit SQL ab

In modernen relationalen Datenbankverwaltungssystemen (RDBMS) ist das Abrufen von Spaltentypinformationen für eine bestimmte Tabelle eine häufige Anforderung. Um diesem Bedarf gerecht zu werden, bietet die in ISO SQL weithin unterstützte Ansicht INFORMATION_SCHEMA.COLUMNS einen standardisierten Mechanismus zum Abrufen von Spaltenmetadaten, einschließlich ihrer Datentypen.

Die Spalte DATA_TYPE in der Ansicht INFORMATION_SCHEMA.COLUMNS zeigt das Basis-T an -SQL/SQL Server-Typnamen, z. B. nvarchar, datetime2 und decimal. Allerdings werden Parameterargumente für parametrisierte Typen ausgeschlossen. Diese Auslassung kann zu unbeabsichtigtem Spaltenverhalten führen.

Um dieses Problem zu mildern, ist es wichtig, zusätzliche Spalten zu nutzen, wie CHARACTER_OCTET_LENGTH (für Binär), CHARACTER_MAXIMUM_LENGTH (für char und nchar), DATETIME_PRECISION (für datetime2 und datetimeoffset). und NUMERIC_PRECISION und NUMERIC_SCALE (für dezimal und numerisch). Durch die Kombination dieser Werte können Sie den vollständigen Typ einschließlich seiner Parameter rekonstruieren.

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 liefert Ergebnisse, die den vollständigen Datentyp einschließlich Parameterinformationen und NULL-Zulässigkeit umfassen, wie unten dargestellt:

[Bild der Abfrageergebnisse]

Das obige ist der detaillierte Inhalt vonWie rufe ich vollständige Spaltendatentypen einschließlich Parametern und NULL-Zulässigkeit in SQL ab?. 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