Re: xpath() subquery for empty array
| От | Scott Bailey | 
|---|---|
| Тема | Re: xpath() subquery for empty array | 
| Дата | |
| Msg-id | 4A5A07B3.10504@comcast.net обсуждение исходный текст  | 
		
| Ответ на | xpath() subquery for empty array (Roy Walter <walt@brookhouse.co.uk>) | 
| Ответы | 
                	
            		Re: xpath() subquery for empty array
            		
            		 | 
		
| Список | pgsql-general | 
Roy Walter wrote:
> In postgres 8.4 When running xpath() queries it seems that empty results
> are always returned. So if I query a table containing 1000 XML documents
> a 1000 rows will always be fetched even if the xpath() element of the
> query only matches 10 documents.
>
> The documentation states:
>
>     The function |xpath| evaluates the XPath expression /xpath/ against
>     the XML value /xml/. It returns an array of XML values corresponding
>     to the node set produced by the XPath expression.
>
> Yet it seems that empty node sets (arrays) are also returned. So, my
> thought was to run a subquery to eliminate empty arrays, e.g.:
>
>     SELECT x
>     FROM (SELECT xpath('//entry[contains(p, ''searchtext'')]/@*', docxml)
>     AS x FROM docs) AS y WHERE x <> [test for empty array?????????]
>
> How do I test for an empty array in postgres?
>
> Thanks in advance,
> Roy
WHERE x != array[]::xml[]
		
	В списке pgsql-general по дате отправления: