2017-08-13 39 views
0

一般來說:如果PostgreSQL函數返回一個數組,我可以訪問其枚舉值之一而不必創建子查詢嗎?使用PostgreSQL xpath函數並從數組中獲得第一個返回值

具體而言,這裏是什麼,我試圖做一個抽象的例子:

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

嗯,我覺得很傻......但因爲回答了自己的問題允許和鼓勵在這個網站...

所有你必須do是將xpath函數放在另一組圓括號中:

SELECT 
    (xpath('/a/text()', subquery.xmlvalue))[1] 
FROM (
    SELECT '<a>theValue</a>'::xml xmlvalue 
) subquery ; 
+0

它說我可以在兩天內接受我自己的答案;它可能會比這更長,直到我可以回到這個位置,但我會稍後回來選擇一個答案(我的或其他人的)。 – rvrabbit

相關問題