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

rvr*_*bit 3 arrays postgresql xpath

一般来说:如果 PostgreSQL 函数返回一个数组,我可以访问它的枚举值之一而不必进行子查询吗?

\n\n

具体来说,这是我正在尝试做的一个抽象示例:

\n\n
SELECT\n    xpath(\'/a/text()\', subquery.xmlvalue)\nFROM (\n    SELECT \'<a>theValue</a>\'::xml xmlvalue\n) subquery ;\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 返回一个数组:

\n\n
   xpath    \n------------\n {theValue}\n(1 row)\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6但我想要的是该数组中的第一个(也是唯一的)值:

\n\n
   xpath    \n------------\n theValue\n(1 row)\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6so,我的问题是,这是(在 \xe2\x80\x94a 子查询下面)唯一的方法,还是有没有办法做到这一点subquery2

\n\n
SELECT subquery2.xpatharray[1] FROM (\n    SELECT\n        xpath(\'/a/text()\', subquery.xmlvalue) xpatharray\n    FROM (\n        SELECT \'<a>theValue</a>\'::xml xmlvalue\n    ) subquery\n) subquery2 ;\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 因为这不起作用

\n\n
SELECT\n    xpath(\'/a/text()\', subquery.xmlvalue)[1]\nFROM (\n    SELECT \'<a>theValue</a>\'::xml xmlvalue\n) subquery ;\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6,错误消息为:

\n\n
ERROR:  syntax error at or near "["\nLINE 2:         xpath(\'/a/text()\', subquery.xmlvalue)[1]\n                                                     ^\n
Run Code Online (Sandbox Code Playgroud)\n

rvr*_*bit 6

好吧,我觉得很傻\xe2\x80\xa6,但是因为这个网站允许并鼓励回答自己的问题\xe2\x80\xa6

\n\n

您所要做的就是将该xpath函数放在另一组括号中:

\n\n
SELECT\n    (xpath('/a/text()', subquery.xmlvalue))[1]\nFROM (\n    SELECT '<a>theValue</a>'::xml xmlvalue\n) subquery ;\n
Run Code Online (Sandbox Code Playgroud)\n