PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como ignorar o ponto de interrogação como espaço reservado ao usar PDO com PostgreSQL


Esta é uma solução para o meu problema. Ele resolve o problema usando a função PostgreSQL para substituir o ? operador.

Não gosto muito porque não torna o PDO mais compatível com o PostgreSQL. Mas não encontrei nenhuma solução real.
CREATE FUNCTION json_key_exists(JSONB,TEXT) RETURNS BOOLEAN LANGUAGE SQL STABLE AS $f$
    SELECT $1 ? $2
$f$;

E agora posso usar a consulta:
SELECT * FROM post WHERE json_key_exists(locations, :location);

A solução alternativa foi sugerida pelo fabuloso RhodiumToad da freenode #postgresql

Editar


Como @Abelisto sugeriu, não há necessidade de criar a função acima como jsonb_exists(jsonb, text) é avialabe