一般来说:如果 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]
^
最佳答案
嗯,我觉得很傻……但是因为这个网站允许并鼓励回答自己的问题……
您所要做的就是将 xpath
函数放在另一组括号中:
SELECT
(xpath('/a/text()', subquery.xmlvalue))[1]
FROM (
SELECT '<a>theValue</a>'::xml xmlvalue
) subquery ;
关于arrays - 使用 PostgreSQL xpath 函数并从数组中获取第一个返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45665865/