Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menentukan Jenis Data Lajur SQL Menggunakan INFORMATION_SCHEMA?
Pernyataan SQL untuk Menentukan Jenis Data Lajur
Dalam bidang pengurusan pangkalan data, memahami jenis data yang dikaitkan dengan lajur jadual adalah penting. SQL menyediakan pandangan yang komprehensif ke dalam struktur dan sifat jadual. Ini termasuk keupayaan untuk mendapatkan maklumat tentang jenis data lajur menggunakan pernyataan SQL tertentu.
INFORMATION_SCHEMA.COLUMNS
Paparan INFORMATION_SCHEMA.COLUMNS berfungsi sebagai alat yang berkuasa untuk membuat pertanyaan metadata tentang jadual dalam pangkalan data. Paparan ini mendedahkan pelbagai butiran tentang lajur, termasuk jenis datanya. Dengan menggunakan lajur DATA_TYPE, anda boleh menentukan jenis data lajur tertentu.
Pertimbangan Parameterisasi
Perhatikan bahawa lajur DATA_TYPE dalam INFORMATION_SCHEMA.COLUMNS mungkin tidak selalu memberikan semua maklumat yang diperlukan untuk jenis data berparameter. Contohnya, ia tidak termasuk argumen untuk parameter, yang boleh membawa kepada isu tingkah laku lajur yang berpotensi.
Untuk menangani perkara ini, anda disyorkan untuk merujuk lajur tambahan dalam paparan INFORMATION_SCHEMA.COLUMNS, seperti:
Pertanyaan Contoh
Pertanyaan SQL berikut menunjukkan cara untuk mendapatkan maklumat jenis data penuh untuk lajur yang ditentukan menggunakan paparan INFORMATION_SCHEMA.COLUMNS: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;
Sampel Output
Melaksanakan pertanyaan akan mengembalikan perihalan komprehensif jenis data untuk lajur yang ditentukan, termasuk parameter dan kebolehbatalannya. Berikut ialah contoh output:Atas ialah kandungan terperinci Bagaimana untuk Menentukan Jenis Data Lajur SQL Menggunakan INFORMATION_SCHEMA?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!