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

La fonction XPath sum ou fn:sum est-elle implémentée dans PostgreSQL XPath ?

Je suis tombé sur le même problème et je suis heureux d'ajouter une autre réponse à la question :

Avec PostgreSQL 9.2, la documentation contient soudainement une phrase de plus couvrant la fonction xpath :

Juste ce que j'ai besoin! Donc, en ce qui concerne la question, une autre réponse valide est :Mettre à niveau vers PostgreSQL 9.2. Au moment où j'écris ceci, la version 9.2 n'est qu'une version bêta, mais je peux confirmer que cela fonctionne :

Détails de la version

postgres=# select version();
                                                     version                                                      
------------------------------------------------------------------------------------------------------------------
 PostgreSQL 9.2beta1 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52), 64-bit
(1 row)

Démonstration de la solution

(Cette démonstration a été faite avec Postgre 9.5, car à l'origine j'avais collé le mauvais code)

postgres=# SELECT xpath('sum(/my:a/value[.>15])', '<my:a xmlns:my="http://example.com">
postgres'# <value>20</value>
postgres'# <value>10</value>
postgres'# <value>30</value>
postgres'# </my:a>',
postgres(# ARRAY[ARRAY['my', 'http://example.com']]);
 xpath 
-------
 {50}
(1 row)