Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Lajur Secara Dinamik dalam MySQL Menggunakan Skema Maklumat?

Bagaimana untuk Memilih Lajur Secara Dinamik dalam MySQL Menggunakan Skema Maklumat?

Susan Sarandon
Susan Sarandonasal
2024-12-22 06:58:27980semak imbas

How to Dynamically Select Columns in MySQL Using Information Schema?

Pemilihan Lajur Dinamik dalam MySQL

Dalam MySQL, mungkin timbul senario di mana anda perlu mendapatkan semula lajur tertentu berdasarkan struktur jadual yang tidak diketahui atau dijangka perubahan skema. Ini menimbulkan cabaran apabila nama lajur pengekodan keras dalam pernyataan SQL tidak praktikal. Artikel ini meneroka penyelesaian kepada masalah ini tanpa perlu memilih setiap lajur.

Menggunakan Skema Maklumat

Pangkalan data information_schema mengandungi metadata tentang semua pangkalan data dan jadual pada pelayan MySQL. Ia termasuk jadual yang dipanggil COLUMNS, yang menyimpan maklumat tentang lajur, termasuk nama, jenis data dan keahlian jadual.

Membina Pertanyaan Dinamik

Untuk memilih lajur secara dinamik nama, anda boleh menggunakan gabungan fungsi MySQL dan jadual information_schema.COLUMNS. Berikut ialah pendekatan langkah demi langkah:

  1. Ekstrak nama lajur yang diminati daripada information_schema.COLUMNS menggunakan pernyataan bersyarat (cth., menapis untuk awalan lajur tertentu).
  2. Sambungkan nama lajur yang dipilih ke dalam rentetan yang boleh digunakan sebagai sebahagian daripada pernyataan SELECT.
  3. Buat pernyataan yang disediakan dengan meletakkan rentetan bercantum ke dalam pembolehubah dan melaksanakannya dengan EXECUTE.

Contoh Pernyataan SQL

Pernyataan SQL berikut menunjukkan cara memilih nama lajur secara dinamik mulakan dengan "awalan" daripada jadual "atable":

CREATE TABLE atable (
  prefix1 VARCHAR(10),
  prefix2 VARCHAR(10),
  notprefix3 INT,
  notprefix4 INT
);

INSERT INTO atable VALUES ('qwer qwer', 'qwerqwer', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'asdfaasd', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'qrt vbb', 1, 1);
INSERT INTO atable VALUES ('qwer qwer', 'sdfg sdg', 1, 1);

SELECT CONCAT('SELECT ', GROUP_CONCAT(c.COLUMN_NAME), ' FROM atable;')
INTO @query
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = 'atable'
  AND c.COLUMN_NAME LIKE 'prefix%'
ORDER BY c.ORDINAL_POSITION;

PREPARE stmt FROM @query;

EXECUTE stmt;

Output:

Output pernyataan ini akan menjadi satu baris yang mengandungi pernyataan SQL berikut:

SELECT prefix1, prefix2 FROM atable;

Dengan melaksanakan pernyataan ini, anda hanya akan mendapatkan semula lajur "prefix1" dan "prefix2" daripada "atable" meja.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Lajur Secara Dinamik dalam MySQL Menggunakan Skema Maklumat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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