PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Fragezeichen als Platzhalter ignorieren, wenn PDO mit PostgreSQL verwendet wird

Dies ist eine Problemumgehung für mein Problem. Es löst das Problem, indem es die PostgreSQL-Funktion verwendet, um den ? zu ersetzen Betreiber.

Ich mag es nicht wirklich, weil es PDO nicht mehr konform mit PostgreSQL macht. Aber ich habe keine wirkliche Lösung gefunden.

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

Und jetzt kann ich die Abfrage verwenden:

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

Die Problemumgehung wurde von dem fabelhaften RhodiumToad von freenode #postgresql

vorgeschlagen

Bearbeiten

Wie @Abelisto vorgeschlagen hat, ist es nicht erforderlich, die obige Funktion als jsonb_exists(jsonb, text) zu erstellen ist verfügbar