Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menentukan Jenis Data Lajur SQL Menggunakan INFORMATION_SCHEMA?

Bagaimana untuk Menentukan Jenis Data Lajur SQL Menggunakan INFORMATION_SCHEMA?

Patricia Arquette
Lepaskan: 2024-12-27 16:44:11
asal
310 orang telah melayarinya

How to Determine a SQL Column's Data Type Using 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:

  • CHARACTER_OCTET_LENGTH (untuk binari jenis)
  • CHARACTER_MAXIMUM_LENGTH (untuk jenis watak dan aksara kebangsaan)
  • DATETIME_PRECISION (untuk jenis datetime2 dan datetimeoffset)
  • NUMERIC_PRECISION dan NUMERIC_SCALE>
Oleh menggabungkan lajur ini, anda boleh membina semula parameterisasi lengkap untuk jenis data.

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

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan