sql >> Databáze >  >> RDS >> PostgreSQL

Jak ignorovat otazník jako zástupný symbol při použití PDO s PostgreSQL

Toto je řešení mého problému. Problém vyřeší použitím funkce PostgreSQL k nahrazení ? operátor.

Moc se mi to nelíbí, protože to neznamená, že PDO více vyhovuje PostgreSQL. Ale nenašel jsem žádné skutečné řešení.

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

A teď mohu použít dotaz:

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

Řešení navrhl báječný RhodiumToad z freenode #postgresql

Upravit

Jak navrhl @Abelisto, není třeba vytvářet funkci výše jako jsonb_exists(jsonb, text) je avialabe



  1. Zablokování MySQL s uloženou procedurou generující UID

  2. Perl dbi Prepare uvádí nesprávnou nabídku

  3. mysql_real_escape_string() zcela odstraní řetězec

  4. jooq rozšířit stávající dialekt. Přijměte dialekt MySQL na dialekt Apache Hive