Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Übergeben des Spaltennamens als Parameter in MySQL

Das Übergeben eines Spaltennamens als Parameter in MySQL (die Frage im Titel) ist in einer SQL-Anweisung nicht möglich. Die Identifikatoren in einer SQL-Anweisung (z. B. die Tabellennamen und Spaltennamen) müssen Teil des SQL-Textes sein. Diese können nicht mit einem Bind-Platzhalter übergeben werden.

Der IN Der Vergleichsoperator erwartet eine in Klammern eingeschlossene Werteliste oder eine in Klammern eingeschlossene SELECT-Abfrage, die eine Reihe von Werten zurückgibt.

Es ist nicht klar, was Sie versuchen zu tun.

Ich vermute, dass template_allowed_parent_templates ist eine Spalte in der Tabelle und enthält eine durch Kommas getrennte Liste von Werten. (Schauder.)

Ich vermute, Sie suchen nach MySQL FIND_IN_SET String-Funktion, die eine kommagetrennte Liste nach einem bestimmten Wert "durchsucht".

Als einfache Demonstration:

  SELECT FIND_IN_SET('5', '2,3,5,7')
       , FIND_IN_SET('4', '2,3,5,7')

Die Funktion gibt eine positive ganze Zahl zurück, wenn der angegebene Wert "gefunden" wird. Sie können diese Funktion in einem Prädikat verwenden, z. B.

WHERE FIND_IN_SET(id,template_allowed_parent_templates)

oder

WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)

(Das funktioniert, weil in MySQL eine positive Ganzzahl in einem booleschen Kontext als TRUE ausgewertet wird.)

Ich vermute nur, was Sie erreichen wollen.