空序列是不包含任何项的序列。 它被表示为“()”。
只包含一项的序列可视为原子值,反之亦然。 也就是说,(1) = 1。
在这样的实现中,序列必须是同类的。 也就是说,您或者具有一个原子值序列,或者具有一个节点序
列。 例如,下面是有效的序列:
复制
下面的查询将返回一个错误,因为不支持异类序列。
复制
QName
XQuery 中的每个标识符都是一个 QName。 QName 由一个命名空间前缀和一个本地名称组成。 在
这样的实现中,XQuery 中的变量名是 QNames,它们不能带有前缀。
请考虑以下示例,其中针对非类型化的 xml 变量指定了查询:
复制
在表达式 ( /Root/a ) 中, Root 和 a 是 QNames。
在下面的示例中,针对类型化的 xml 列指定了查询。 查询将循环访问第一个工作中心位置的所有 <步
骤> 元素。
复制
DECLARE @x xml;
SET @x = '';
SELECT @x.query('(1,2, (3,4,5)),6');
DECLARE @x xml;
SET @x = '';
-- Expression returns a sequence of 1 text node (singleton).
SELECT @x.query('1');
-- Expression returns a sequence of 2 text nodes
SELECT @x.query('"abc", "xyz"');
-- Expression returns a sequence of one atomic value. data() returns
-- typed value of the node.
SELECT @x.query('data(1)');
-- Expression returns a sequence of one element node.
-- In the expression XML construction is used to construct an element.
SELECT @x.query('<x> {1+2} </x>');
SELECT @x.query('<x>11</x>, 22');
DECLARE @x xml;
SET @x = '<Root><a>111</a></Root>';
SELECT @x.query('/Root/a');
评论