sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan ignorerer du spørgsmålstegn som pladsholder, når du bruger PDO med PostgreSQL

Dette er en løsning på mit problem. Det løser problemet ved at bruge PostgreSQL-funktionen til at erstatte ? operatør.

Jeg kan ikke rigtig lide det, fordi det ikke gør PDO mere overholdelse af PostgreSQL. Men jeg fandt ingen reel løsning.

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

Og nu kan jeg bruge forespørgslen:

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

Løsningen blev foreslået af den fantastiske RhodiumToad fra freenode #postgresql

Rediger

Som @Abelisto foreslog, er det ikke nødvendigt at oprette funktionen ovenfor som jsonb_exists(jsonb, text) er avialabe



  1. MySQL:Indsæt post, hvis den ikke findes i tabellen

  2. MongoDB eller MySQL eller begge i en Rails-app

  3. SQLite grupper efter/tæl timer, dage, uger, år

  4. FROM-sætning, der er nødvendig i hver SELECT-sætning