Heim >Datenbank >MySQL-Tutorial >Wie wähle ich Spalten in MySQL mithilfe des Informationsschemas dynamisch aus?

Wie wähle ich Spalten in MySQL mithilfe des Informationsschemas dynamisch aus?

Susan Sarandon
Susan SarandonOriginal
2024-12-22 06:58:27971Durchsuche

How to Dynamically Select Columns in MySQL Using Information Schema?

Dynamische Spaltenauswahl in MySQL

In MySQL kann es zu Situationen kommen, in denen Sie bestimmte Spalten basierend auf einer unbekannten oder erwarteten Tabellenstruktur abrufen müssen Schemaänderungen. Dies stellt eine Herausforderung dar, wenn es unpraktisch ist, Spaltennamen in einer SQL-Anweisung fest zu codieren. In diesem Artikel wird eine Lösung für dieses Problem untersucht, ohne jede Spalte auswählen zu müssen.

Verwendung des Informationsschemas

Die Datenbank „information_schema“ enthält Metadaten zu allen Datenbanken und Tabellen auf dem MySQL-Server. Es enthält eine Tabelle namens COLUMNS, die Informationen über Spalten speichert, einschließlich ihrer Namen, Datentypen und Tabellenmitgliedschaft.

Erstellen einer dynamischen Abfrage

Zum dynamischen Auswählen von Spalten Namen können Sie eine Kombination aus MySQL-Funktionen und der Tabelle information_schema.COLUMNS verwenden. Hier ist ein schrittweiser Ansatz:

  1. Extrahieren Sie die gewünschten Spaltennamen aus information_schema.COLUMNS mithilfe einer bedingten Anweisung (z. B. Filtern nach bestimmten Spaltenpräfixen).
  2. Verketten Sie die Ausgewählte Spaltennamen in eine Zeichenfolge umwandeln, die als Teil einer SELECT-Anweisung verwendet werden kann.
  3. Erstellen Sie eine vorbereitete Anweisung durch Platzieren die verkettete Zeichenfolge in eine Variable umwandeln und mit EXECUTE ausführen.

Beispiel-SQL-Anweisung

Die folgende SQL-Anweisung zeigt, wie Spaltennamen, die mit beginnen, dynamisch ausgewählt werden „Präfix“ aus der Tabelle "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;

Ausgabe:

Die Ausgabe dieser Anweisung ist eine einzelne Zeile mit der folgenden SQL-Anweisung:

SELECT prefix1, prefix2 FROM atable;

Durch Ausführen dieser Anweisung rufen Sie nur die Spalten „prefix1“ und „prefix2“ aus der Tabelle „atable“ ab.

Das obige ist der detaillierte Inhalt vonWie wähle ich Spalten in MySQL mithilfe des Informationsschemas dynamisch aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn