sql-server-2008 – 从XML列获取值

我有一个带有此值的
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

试试看!

点赞