2009-04-17 14 views
5

इस क्वेरी में विफल रहता है:क्या पोस्टग्रेएसक्यूएल किसी फ़ंक्शन द्वारा लौटाए गए सरणी से चयन कर सकता है?

SELECT xpath('/my/xpath/expr', my_xml)[1] FROM my_table 

ERROR: syntax error at or near "[" 

लेकिन यह एक काम करता है:

SELECT x[1] FROM 
    (SELECT xpath('/my/xpath/expr', my_xml) as x FROM my_table) as ss 

मेरे xpath एक्सप्रेशन हमेशा केवल एक ही मान देता है, लेकिन Postgres xpath समारोह एक सरणी देता है। मैं सरणी में पहला मान चुनना चाहता हूं। जबकि उप-चयन काम करता है, यह बहुत बदसूरत है।

पहली क्वेरी क्यों काम नहीं करती है, और क्या दूसरी क्वेरी से ऐसा करने का एक क्लीनर तरीका है?

उत्तर

7

कैसे इस बारे में:

SELECT (xpath('/my/xpath/expr', my_xml))[1] FROM my_table; 
+1

उल्लेखनीय बस समाधान था! मुझे लगता है कि जब संदेह में, अधिक कोष्ठक का उपयोग करें। – DNS

संबंधित मुद्दे