Dynamisches SQL für die Auswahl von Wildcard-Spalten
Frage:
Angenommen, Sie haben eine Datenbanktabelle mit mehreren Spalten mit ähnlichen Präfixen, z. B. „Obst“ und „Gemüse“. Wie können Sie effizient Daten aus allen Spalten auswählen, die mit einem bestimmten Wort beginnen, ohne jeden Spaltennamen manuell anzugeben?
Beispiel:
Bedenken Sie die folgende Tabellenstruktur:
<code class="markdown">Foods | Fruit | Vegetable ---------------------- Apples | Banana | Carrots Pears | Grapes | Potatoes Oranges | Lemon | Tomatoes</code>
Sie möchten alle Spalten auswählen, deren Namen mit „Gemüse“ beginnen.
Antwort:
Direkte Platzhalterersetzungen in MySQL-Abfragen, wie z. B. SELECT Gemüse % werden nicht unterstützt. Um alle Spalten, die diese Kriterien erfüllen, dynamisch auszuwählen, können Sie die SQL-Abfrage basierend auf Informationen erstellen, die Sie aus dem Datenbankschema erhalten. Hier ist eine Lösung:
<code class="sql">SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'Foods' AND table_schema = 'YourDB' AND column_name LIKE 'Vegetable%'</code>
Diese Abfrage ruft die Namen aller Spalten in der Lebensmitteltabelle ab, die mit „Gemüse“ beginnen. Anschließend können Sie diese Informationen verwenden, um dynamisch eine zweite Abfrage zu erstellen, die Daten aus den gewünschten Spalten auswählt:
<code class="php">$columnList = mysql_query($columnsQuery); $columnArray = array(); while ($row = mysql_fetch_assoc($columnList)) { array_push($columnArray, $row['COLUMN_NAME']); } $columns = implode(",", $columnArray); $query = "SELECT " . $columns . " FROM Foods";</code>
Durch Ausführen dieser Abfrage können Sie alle Daten aus den Spalten abrufen, deren Namen mit „Gemüse“ beginnen ein einziger Durchgang.
Das obige ist der detaillierte Inhalt vonWie wähle ich Daten aus Spalten mit ähnlichen Präfixen mithilfe von Dynamic SQL in MySQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!