Heim > Datenbank > MySQL-Tutorial > Wie erhalte ich den vollständigen Datentyp einer SQL-Spalte einschließlich Parametern?

Wie erhalte ich den vollständigen Datentyp einer SQL-Spalte einschließlich Parametern?

DDD
Freigeben: 2024-12-27 18:58:14
Original
387 Leute haben es durchsucht

How to Get the Complete Data Type of a SQL Column Including Parameters?

Spaltentyp in SQL abrufen

Um den Datentyp einer bestimmten Spalte in einer Tabelle abzurufen, können Sie das System INFORMATION_SCHEMA.COLUMNS verwenden Sicht. Diese Ansicht wird in ISO SQL, einschließlich SQL Server, unterstützt.

Die Spalte DATA_TYPE in der Ansicht INFORMATION_SCHEMA.COLUMNS stellt die grundlegenden SQL Server/T-SQL-Typnamen bereit. Beachten Sie jedoch, dass diese Informationen möglicherweise keine Argumente für parametrisierte Typen enthalten, was in einigen Fällen zu unerwartetem Verhalten führen kann.

Betrachten Sie beispielsweise drei Spalten mit den Datentypen nvarchar(max), datetime2(3) und dezimal(10,5). Die entsprechende INFORMATION_SCHEMA.COLUMNS-Ausgabe zeigt nur nvarchar, datetime2 und decimal an.

Um die Parameterwerte des Typs vollständig zu rekonstruieren, wird empfohlen, zusätzliche Spalten aus der INFORMATION_SCHEMA.COLUMNS-Ansicht zu untersuchen:

  • CHARACTER_OCTET_LENGTH (für binär)
  • CHARACTER_MAXIMUM_LENGTH (für char und nchar)
  • DATETIME_PRECISION (für datetime2 und datetimeoffset)
  • NUMERIC_PRECISION und NUMERIC_SCALE (für dezimal und numerisch)

Für Die folgende SQL-Abfrage zeigt beispielsweise, wie der detaillierte Datentyp für eine bestimmte Spalte abgerufen wird:

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 gibt Ergebnisse im folgenden Format zurück:

TABLE_SCHEMA | TABLE_NAME | ORDINAL_POSITION | COLUMN_NAME | FULL_DATA_TYPE
yourSchemaName | yourTableName | 1 | yourColumnName | nvarchar(max) NOT NULL
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erhalte ich den vollständigen Datentyp einer SQL-Spalte einschließlich Parametern?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage