arrays - 使用 PostgreSQL xpath 函数并从数组中获取第一个返回值

标签 arrays postgresql xpath

一般来说:如果 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/

相关文章:

xml - 如何使用 XSLT/XPath 生成以逗号分隔的列表?

python - 在字符串中使用 XPath

javascript - 反转数组 - 了解解决方案

java - 使用 Arrays.asList 方法通过 Stream 打印 int Array

c - C 中循环反转字符串

sql - 为基于数组的列中的每个值多次返回同一行

python - 如何沿轴合并和拆分numpy数组?

SQLAlchemy 从列中获取标签名称

java - 如何在整数字段上执行 Restrictions.like

sql-server - SQL Server 查询 XML xpath 空命名空间