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:
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;
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!