Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Jenis Data Lengkap Lajur SQL Termasuk Parameter?

Bagaimana untuk Mendapatkan Jenis Data Lengkap Lajur SQL Termasuk Parameter?

DDD
Lepaskan: 2024-12-27 18:58:14
asal
387 orang telah melayarinya

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

Dapatkan Jenis Lajur dalam SQL

Untuk mendapatkan jenis data lajur tertentu dalam jadual, anda boleh menggunakan sistem INFORMATION_SCHEMA.COLUMNS pandangan. Paparan ini disokong dalam ISO SQL, termasuk SQL Server.

Lajur DATA_TYPE dalam paparan INFORMATION_SCHEMA.COLUMNS menyediakan nama jenis SQL Server/T-SQL asas. Walau bagaimanapun, ambil perhatian bahawa maklumat ini mungkin tidak termasuk argumen untuk jenis parameter, yang boleh membawa kepada tingkah laku yang tidak dijangka dalam beberapa kes.

Sebagai contoh, pertimbangkan tiga lajur dengan jenis data nvarchar(max), datetime2(3) dan perpuluhan(10,5). Output INFORMATION_SCHEMA.COLUMNS yang sepadan hanya akan menunjukkan nvarchar, datetime2 dan perpuluhan.

Untuk membina semula nilai parameter jenis sepenuhnya, adalah disyorkan untuk memeriksa lajur tambahan daripada paparan INFORMATION_SCHEMA.COLUMNS:

  • CHARACTER_OCTET_LENGTH (untuk binari)
  • CHARACTER_MAXIMUM_LENGTH (untuk char dan nchar)
  • DATETIME_PRECISION (untuk datetime2 dan datetimeoffset)
  • NUMERIC_PRECISION dan NUMERIC_SCALE (untuk perpuluhan🎜>Sebagai contoh, pertanyaan SQL berikut menunjukkan cara untuk mendapatkan semula jenis data terperinci untuk lajur tertentu:

Pertanyaan ini mengembalikan keputusan dalam format berikut:

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;
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Jenis Data Lengkap Lajur SQL Termasuk Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan