sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo ignorar el signo de interrogación como marcador de posición cuando se usa PDO con PostgreSQL

Esta es una solución a mi problema. Resuelve el problema usando la función PostgreSQL para reemplazar el ? operador.

Realmente no me gusta porque no hace que PDO cumpla más con PostgreSQL. Pero no encontré una solución real.

CREATE FUNCTION json_key_exists(JSONB,TEXT) RETURNS BOOLEAN LANGUAGE SQL STABLE AS $f$
    SELECT $1 ? $2
$f$;

Y ahora puedo usar la consulta:

SELECT * FROM post WHERE json_key_exists(locations, :location);

La solución fue sugerida por el fabuloso RhodiumToad de freenode #postgresql

Editar

Como sugirió @Abelisto, no es necesario crear la función anterior como jsonb_exists(jsonb, text) es avialabe