sql >> Base de Datos >  >> RDS >> Mysql

Pasar el nombre de la columna como parámetro en MySQL

En cuanto a pasar un nombre de columna como parámetro en MySQL (la pregunta en el título), eso no es posible en una instrucción SQL. Los identificadores en una declaración SQL (por ejemplo, los nombres de las tablas y los nombres de las columnas) deben ser parte del texto SQL. Esos no se pueden pasar con un marcador de posición de enlace.

El IN El operador de comparación espera una lista de valores entre paréntesis, o una consulta SELECT entre paréntesis que devuelve un conjunto de valores.

No está claro lo que está intentando hacer.

Sospecho que template_allowed_parent_templates es una columna de la tabla y contiene una lista de valores separados por comas. (estremecimiento.)

Sospecho que podría estar buscando MySQL FIND_IN_SET función de cadena, que "buscará" una lista separada por comas para un valor particular.

Como una simple demostración:

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

La función devuelve un entero positivo cuando se "encuentra" el valor especificado. Puede hacer uso de esa función en un predicado, por ejemplo,

WHERE FIND_IN_SET(id,template_allowed_parent_templates)

o

WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)

(Esto funciona porque en MySQL un entero positivo se evalúa como VERDADERO en un contexto booleano).

Solo estoy adivinando lo que estás tratando de lograr.