rvr*_*bit 3 arrays postgresql xpath
一般来说:如果 PostgreSQL 函数返回一个数组,我可以访问它的枚举值之一而不必进行子查询吗?
\n\n具体来说,这是我正在尝试做的一个抽象示例:
\n\nSELECT\n xpath(\'/a/text()\', subquery.xmlvalue)\nFROM (\n SELECT \'<a>theValue</a>\'::xml xmlvalue\n) subquery ;\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6 返回一个数组:
\n\n xpath \n------------\n {theValue}\n(1 row)\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6但我想要的是该数组中的第一个(也是唯一的)值:
\n\n xpath \n------------\n theValue\n(1 row)\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6so,我的问题是,这是(在 \xe2\x80\x94a 子查询下面)唯一的方法,还是有没有办法做到这一点subquery2?
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 ;\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6 因为这不起作用:
\n\nSELECT\n xpath(\'/a/text()\', subquery.xmlvalue)[1]\nFROM (\n SELECT \'<a>theValue</a>\'::xml xmlvalue\n) subquery ;\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6,错误消息为:
\n\nERROR: syntax error at or near "["\nLINE 2: xpath(\'/a/text()\', subquery.xmlvalue)[1]\n ^\nRun Code Online (Sandbox Code Playgroud)\n
好吧,我觉得很傻\xe2\x80\xa6,但是因为这个网站允许并鼓励回答自己的问题\xe2\x80\xa6
\n\n您所要做的就是将该xpath函数放在另一组括号中:
SELECT\n (xpath('/a/text()', subquery.xmlvalue))[1]\nFROM (\n SELECT '<a>theValue</a>'::xml xmlvalue\n) subquery ;\nRun Code Online (Sandbox Code Playgroud)\n