Heim > Datenbank > MySQL-Tutorial > Wie bestimme ich den Datentyp einer SQL-Spalte mithilfe von INFORMATION_SCHEMA?

Wie bestimme ich den Datentyp einer SQL-Spalte mithilfe von INFORMATION_SCHEMA?

Patricia Arquette
Freigeben: 2024-12-27 16:44:11
Original
308 Leute haben es durchsucht

How to Determine a SQL Column's Data Type Using INFORMATION_SCHEMA?

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.:

  • CHARACTER_OCTET_LENGTH (für Binärtypen)
  • CHARACTER_MAXIMUM_LENGTH (für Zeichen- und nationale Zeichentypen)
  • DATETIME_PRECISION (für datetime2- und datetimeoffset-Typen)
  • NUMERIC_PRECISION und NUMERIC_SCALE (für dezimale und numerische Typen)

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

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!

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