Tengo un objeto de filtro para consultar una tabla con muchas columnas, y en lugar de escribir una condición que cubre todas las columnas (que permite la filtración opcional) así:Cómo consultar los nombres de columna dinámicamente utilizando Postgres/Npgsql
WHERE ((:value0 IS NULL) OR (column_name0 = :value0)) AND ((:value1 IS NULL) OR (column_name1 = :value1)) AND... etc
para cada columna. En su lugar, me gustaría idealmente me gustaría ser capaz de pasar en el nombre del campo como un parámetro:
WHERE :column_name0 = :value0 AND column_name1 = :value1 AND... etc
que no es posible ya que se requieren las columnas en tiempo de análisis (similar a esta respuesta given here) .
¿Cómo superar esto? - Realmente no quiero tener que mantener el SQL cuando se agregan o eliminan nuevas columnas (como tendrías que hacer en mi primer ejemplo) y creo que sería peligroso para mí construir los nombres de las columnas en la cadena de comandos directamente ya que esto podría permitir la inyección de sql.
Tenga en cuenta que este código está detrás de un servicio web.
¿Por qué a menudo es necesario añadir o eliminar columnas? ¿Qué buena razón hay para tal necesidad? –
@ypercube, no necesito hacer esto a menudo. Simplemente no quería mantener el sql en mi objeto de filtro para cada cambio en mi base de datos y al mismo tiempo proporcionar un objeto flexible para filtrar datos. –