SQL Server XML解析与连接
我在XML类型的“test”列中有一组XML,如下所示。这张桌子是“奶牛”SQL Server XML解析与连接,sql,sql-server,xml,Sql,Sql Server,Xml,我在XML类型的“test”列中有一组XML,如下所示。这张桌子是“奶牛” 查询 在里面 1. 2. 3. 4. 我想写一个select语句,返回1行1列,值为“apple、pear、kiwi、carrot”。这可能吗?如果没有其他标准,您只需将这些值作为一件事检索,您可以这样做: SELECT STUFF((SELECT ', ' + A.B.value('@name', 'NVARCHAR(255)') FROM cow CROSS APPLY test.nodes('p/v/w/
查询
在里面
1.
2.
3.
4.
我想写一个select语句,返回1行1列,值为“apple、pear、kiwi、carrot”。这可能吗?如果没有其他标准,您只需将这些值作为一件事检索,您可以这样做:
SELECT STUFF((SELECT ', ' + A.B.value('@name', 'NVARCHAR(255)')
FROM cow
CROSS APPLY test.nodes('p/v/w/p/v') A(B)
FOR XML PATH('')), 1, 2, '')
具有讽刺意味的是,XML路径的与它是一个XML列这一事实无关。考虑使用XQuery的函数,该函数获取一系列项并将其原子化:
CREATE TABLE #cow(cow XML);
INSERT INTO #cow
SELECT (N'<p>
<k>query</k>
<v>
<w id="a" name="b">
<p>
<op>IN</op>
<v name="apple">1</v>
<v name="pear">2</v>
<v name="kiwi">3</v>
<v name="carrot">4</v>
</p>
</w>
</v>
</p>');
select cow.query('data(/p/v/w/p/v/@name)') as example from #cow
# example
#1 apple pear kiwi carrot
我喜欢这样,+1在我这边,但是要注意,如果连接的字符串包含空格,逗号替换将不起作用。。。
CREATE TABLE #cow(cow XML);
INSERT INTO #cow
SELECT (N'<p>
<k>query</k>
<v>
<w id="a" name="b">
<p>
<op>IN</op>
<v name="apple">1</v>
<v name="pear">2</v>
<v name="kiwi">3</v>
<v name="carrot">4</v>
</p>
</w>
</v>
</p>');
select cow.query('data(/p/v/w/p/v/@name)') as example from #cow
# example
#1 apple pear kiwi carrot
select REPLACE(CONVERT(nvarchar(255), cow.query('data(/p/v/w/p/v/@name)')),
' ', ', ') as example from #cow
# example
#1 apple, pear, kiwi, carrot