PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment empêcher PDO d'interpréter un point d'interrogation comme un espace réservé ?

Utilisez le formulaire d'appel de fonction. Selon les catalogues système, le hstore ? l'opérateur utilise le exist fonction :

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

vous pouvez donc écrire :

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

(Personnellement, je ne suis pas un grand fan de la conception et de la documentation centrées sur l'opérateur de hstore, je pense qu'il ignore les propriétés utiles d'auto-documentation d'une interface basée sur des fonctions sans aucun avantage réel et j'utilise généralement ses appels de fonction plutôt que ses opérateurs. Juste parce que vous pouvez définir des opérateurs ne signifie pas que vous devriez.)