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
Lepaskan: 2024-12-22 06:58:27
asal
939 orang telah melayarinya

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

Output:

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

SELECT prefix1, prefix2 FROM atable;
Salin selepas log masuk

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!

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