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

Come impedire a PDO di interpretare un punto interrogativo come segnaposto?

Utilizzare il modulo di chiamata di funzione. Secondo i cataloghi di sistema, hstore ? l'operatore utilizza exist funzione:

regress=# select oprname, oprcode from pg_operator where oprname = '?';
 oprname | oprcode 
---------+---------
 ?       | exist
(1 row)

quindi puoi scrivere:

SELECT * FROM tbl WHERE exist(hst,'foo');

(Personalmente non sono un grande fan della progettazione e della documentazione incentrate sull'operatore di hstore, penso che scarti le utili proprietà di autodocumentazione di un'interfaccia basata su funzioni senza alcun reale vantaggio e di solito uso le sue chiamate di funzione piuttosto che i suoi operatori. Solo perché puoi definire gli operatori non significa che dovresti.)