一般来说:如果PostgreSQL函数返回一个数组,我是否可以访问其中一个枚举值而无需创建子查询?
具体来说,这是我正在尝试做的一个抽象的例子:
SELECT
xpath('/a/text()', subquery.xmlvalue)
FROM (
SELECT '<a>theValue</a>'::xml xmlvalue
) subquery ;
...返回一个数组:
xpath
------------
{theValue}
(1 row)
...但我想要的是这个数组的第一个(也是唯一的,在这种情况下)值:
xpath
------------
theValue
(1 row)
...所以,我的问题是,这是(在一个子查询下面)唯一的方法吗,或者有没有办法在没有subquery2
的情况下做到这一点?
SELECT subquery2.xpatharray[1] FROM (
SELECT
xpath('/a/text()', subquery.xmlvalue) xpatharray
FROM (
SELECT '<a>theValue</a>'::xml xmlvalue
) subquery
) subquery2 ;
...因为这确实不工作:
SELECT
xpath('/a/text()', subquery.xmlvalue)[1]
FROM (
SELECT '<a>theValue</a>'::xml xmlvalue
) subquery ;
...并且错误消息是:
ERROR: syntax error at or near "["
LINE 2: xpath('/a/text()', subquery.xmlvalue)[1]
^
答案 0 :(得分:0)
嗯,我觉得很傻......但是在这个网站上允许并鼓励回答一个人自己的问题...
您所要做的就是将xpath
函数放在另一组括号中:
SELECT
(xpath('/a/text()', subquery.xmlvalue))[1]
FROM (
SELECT '<a>theValue</a>'::xml xmlvalue
) subquery ;