Mysql
 sql >> Database >  >> RDS >> Mysql

Passaggio del nome della colonna come parametro in MySQL

Per quanto riguarda il passaggio di un nome di colonna come parametro in MySQL (la domanda nel titolo), non è possibile in un'istruzione SQL. Gli identificatori in un'istruzione SQL (ad es. i nomi delle tabelle e delle colonne) deve essere parte del testo SQL. Quelli non possono essere passati con un segnaposto vincolante.

Il IN l'operatore di confronto prevede un elenco di valori racchiuso tra parentesi o una query SELECT racchiusa tra parentesi che restituisce un insieme di valori.

Non è chiaro cosa stai cercando di fare.

Sospetto che template_allowed_parent_templates è una colonna della tabella e contiene un elenco di valori separati da virgole. (rabbrividire.)

Sospetto che tu stia cercando MySQL FIND_IN_SET funzione di stringa, che "cercherà" in un elenco separato da virgole un valore particolare.

Come semplice dimostrazione:

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

La funzione restituisce un numero intero positivo quando il valore specificato è "trovato". Puoi utilizzare quella funzione in un predicato, ad es.

WHERE FIND_IN_SET(id,template_allowed_parent_templates)

o

WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)

(Questo funziona perché in MySQL un intero positivo viene valutato come VERO in un contesto booleano.)

Sto solo indovinando cosa stai cercando di ottenere.