我有一个带有此值的
XML列
<sso_links>
<linktype>mytype</linktype>
<url>http://mydomain.com</url>
<linktype>mytype2</linktype>
<url>http://somedomain.com</url>
</sso_links>
我已经尝试使用SQL按值查询,但这只返回标量类型
SELECT XMLCOLUMN.value('//linktype[1]', varchar(max)),
XMLCOLUMN.value('//url[1]', varchar(max))
from table
where someid = '1'
这从XML生成了2行.如何输出所有值?
最佳答案 创建表格
CREATE TABLE docs (pk INT PRIMARY KEY, xCol XML not null)
插入值
INSERT INTO docs VALUES (1, '<sso_links>
<linktype>mytype</linktype>
<url>http://mydomain.com</url>
<linktype>mytype2</linktype>
<url>http://somedomain.com</url>
</sso_links>')
现在选择所需的值
SELECT xCol.value('(/sso_links//linktype/node())[1]', 'nvarchar(max)') AS linktype
,xCol.value('(/sso_links//url/node())[1]', 'nvarchar(max)') AS url
,xCol.value('(/sso_links//linktype/node())[2]', 'nvarchar(max)') AS linktype2
,xCol.value('(/sso_links//url/node())[2]', 'nvarchar(max)') AS url2
FROM docs
WHERE pk = 1
试试看!