2009-04-17 11 views
5

Esta consulta falla:¿Puede PostgreSQL seleccionar desde una matriz devuelta por una función?

SELECT xpath('/my/xpath/expr', my_xml)[1] FROM my_table 

ERROR: syntax error at or near "[" 

Pero éste funciona:

SELECT x[1] FROM 
    (SELECT xpath('/my/xpath/expr', my_xml) as x FROM my_table) as ss 

Mi expresión XPath siempre devuelve un solo valor, pero la función XPath Postgres devuelve una matriz. Quiero seleccionar el primer valor en la matriz. Si bien la subselección funciona, es bastante fea.

¿Por qué no funciona la primera consulta, y hay una manera más clara de hacer esto que la segunda consulta?

Respuesta

7

¿Qué tal esto:

SELECT (xpath('/my/xpath/expr', my_xml))[1] FROM my_table; 
+1

Esa era una solución muy simple! Supongo que en caso de duda, use más paréntesis. – DNS

Cuestiones relacionadas