Dapatkan Jenis Lajur dengan SQL
Dalam pelbagai senario pangkalan data, memahami jenis data lajur tertentu dalam jadual adalah penting. Nasib baik, SQL menawarkan penyelesaian yang komprehensif untuk mendapatkan semula jenis lajur melalui paparan INFORMATION_SCHEMA.COLUMNS. Paparan ini menyediakan metadata tentang jadual pangkalan data dan lajurnya, termasuk maklumat jenis data yang diidamkan.
Lajur DATA_TYPE dalam INFORMATION_SCHEMA.COLUMNS mengembalikan jenis data asas lajur. Walau bagaimanapun, untuk sesetengah jenis data dengan pilihan parameterisasi seperti nvarchar atau datetime2, jenis asas sahaja mungkin tidak mencukupi untuk menerangkan sepenuhnya ciri lajur.
Untuk menangani isu ini, lajur tambahan dalam paparan boleh dirujuk. Contohnya, CHARACTER_OCTET_LENGTH untuk binari dan varbinari, CHARACTER_MAXIMUM_LENGTH untuk char, nchar, varchar dan nvarchar, DATETIME_PRECISION untuk datetime2 dan datetimeoffset, dan NUMERIC_PRECISION dan NUMERIC_SCALE untuk jenis data parameter perpuluhan dan yang diperlukan untuk membina semula jenis data parameter perpuluhan dan perlu dengan tepat nilai.
Dengan merujuk lajur tambahan ini dan menggabungkan nilainya dengan jenis data asas, anda boleh mendapatkan penerangan yang tepat tentang jenis lajur. Contoh pertanyaan berikut menunjukkan proses ini:
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;
Pertanyaan ini mengumpulkan maklumat jenis data lengkap dengan teliti, termasuk nilai parameter dan status kebolehbatalan, ke dalam lajur FULL_DATA_TYPE. Dengan melaksanakan pertanyaan ini, anda boleh mendapatkan semula jenis data yang tepat bagi lajur tertentu dan memperoleh pemahaman yang lebih mendalam tentang skema pangkalan data anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Jenis Data Tepat bagi Lajur SQL Termasuk Parameter dan Kebolehnullan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!