首頁 > 資料庫 > mysql教程 > 如何使用 INFORMATION_SCHEMA 來確定 SQL 資料列的資料類型?

如何使用 INFORMATION_SCHEMA 來確定 SQL 資料列的資料類型?

Patricia Arquette
發布: 2024-12-27 16:44:11
原創
308 人瀏覽過

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

確定列資料類型的 SQL 語句

在資料庫管理領域,了解與表格列相關的資料類型至關重要。 SQL 提供了表格結構和屬性的全面視圖。這包括使用特定 SQL 語句檢索有關列資料類型的信息的能力。

INFORMATION_SCHEMA.COLUMNS

INFORMATION_SCHEMA.COLUMNS 檢視是用於查詢的強大工具。有關資料庫中表格的元資料。此視圖公開有關列的各種詳細信息,包括它們的資料類型。透過利用 DATA_TYPE 列,您可以確定特定列的資料類型。

參數化注意事項

請注意,INFORMATION_SCHEMA.COLUMNS 中的 DATA_TYPE 欄位可能不會總是提供參數化資料類型的所有必要資訊。例如,它不包含參數參數,這可能會導致潛在的列行為問題。

要解決此問題,建議查閱 INFORMATION_SCHEMA.COLUMNS 檢視中的其他資料列,例如:

  • CHARACTER_OCTET_LENGTH(對於二進位型別)
  • CHARACTER_MAXIMUM_LENGTH(適用於字元和國家字元型別)
  • DATETIME_PRECISION(VateSmION(SVate_Nidivates
  • 透過組合這些列,您可以重建資料類型的完整參數化。

範例查詢

以下 SQL查詢示範如何使用 INFORMATION_SCHEMA.COLUMNS檢索指定列的完整資料類型資訊view:

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;
登入後複製
範例輸出

執行查詢將傳回指定列的資料類型的全面描述,包括其參數和可為空性。以下是輸出範例:

以上是如何使用 INFORMATION_SCHEMA 來確定 SQL 資料列的資料類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板