4
 DECLARE @myXml XML

 SET @myXml =  CONVERT(xml, '<a key="2"></a>', 1)

 SELECT  s.value('@key', 'VARCHAR(8000)')   AS myKey from   @myXml.nodes('/a')  t(s)

回答 :

在此处输入图像描述

这很好。

我想在不声明 @myXml变量的情况下做到这一点。

就像是 :

 SELECT  
    s.value('@key', 'VARCHAR(8000)') AS myKey 
 FROM 
    CONVERT(xml, N'<a key="2"></a>', 1) .nodes('/a')  t(s)

但我收到一个错误:

在此处输入图像描述

4

2 回答 2

2

你可以做:

Select CONVERT(xml, N'<a key="2"></a>', 1).value('a[1]/@key', 'varchar(8000)')
于 2012-01-09T15:59:14.903 回答
1

这应该有效:

;WITH xgen (xdata)
AS
(
    SELECT CONVERT(xml, '<a key="2"></a>', 1) AS xdata
)
select s.value('@key', 'VARCHAR(8000)')   AS myKey 
from xgen
    cross apply xgen.xdata.nodes('/a') t(s)
于 2012-01-09T16:08:33.247 回答