Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengambil Jenis Data Lajur Lengkap Termasuk Parameter dan Kebolehnulan dalam SQL?
Dalam sistem pengurusan pangkalan data hubungan moden (RDBMS), mendapatkan maklumat jenis lajur untuk jadual tertentu adalah keperluan biasa. Untuk menangani keperluan ini, paparan INFORMATION_SCHEMA.COLUMNS, disokong secara meluas dalam ISO SQL, menyediakan mekanisme piawai untuk mendapatkan semula metadata lajur, termasuk jenis datanya.
Lajur DATA_TYPE dalam paparan INFORMATION_SCHEMA.COLUMNS memaparkan asas T -SQL/SQL Nama jenis Pelayan, seperti nvarchar, datetime2 dan perpuluhan. Walau bagaimanapun, ia tidak termasuk argumen parameter untuk jenis parameter. Peninggalan ini boleh membawa kepada gelagat lajur yang tidak diingini.
Untuk mengurangkan isu ini, adalah penting untuk memanfaatkan lajur tambahan, seperti CHARACTER_OCTET_LENGTH (untuk binari), CHARACTER_MAXIMUM_LENGTH (untuk char dan nchar), DATETIME_PRECISION (untuk datetime2 dan datetimeoffset , dan NUMERIC_PRECISION dan NUMERIC_SCALE (untuk perpuluhan dan angka). Dengan menggabungkan nilai ini, anda boleh membina semula jenis lengkap, termasuk parameternya.
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 menghasilkan hasil yang merangkumi jenis data lengkap, termasuk maklumat parameter dan kebolehbatalan, seperti yang digambarkan di bawah:
[Imej hasil pertanyaan]
Atas ialah kandungan terperinci Bagaimana untuk Mengambil Jenis Data Lajur Lengkap Termasuk Parameter dan Kebolehnulan dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!