从SQL Server中的XML中选择多个值

时间:2016-09-09 15:56:50

标签: sql-server xml

我有一个@MyXMLString参数以下列格式传递给存储过程:

DECLARE @MyXMLString XML
SET @MyXMLString =
'<data formID="2">
 <UnAssigned AcctTypeID="1"/><UnAssigned AcctTypeID="2"/>
 </data>'

在存储过程中,我必须检索formIDAcctTypeID的值,然后更新表。

现在只有一个formID,我可以检索

DECLARE @formID int
SET @formID = @MyXMLString.value('(data/@formID)[1]','int')

但可以有一个或多个AcctTypeID,即'<UnAssigned AcctTypeID="1"/>'中的一个或多个。我需要帮助来弄清楚如何检索它。

2 个答案:

答案 0 :(得分:1)

您可以像这样获取AcctTypeID的所有实例:

SELECT 
    XC.value('@AcctTypeID', 'int')
FROM
    @MyXMLString.nodes('/data/UnAssigned') AS XT(XC)

执行此操作时,结果如下:

enter image description here

答案 1 :(得分:0)

这应该有效:

DECLARE @MyXMLString XML
SET @MyXMLString =
'<data formID="2">
 <UnAssigned AcctTypeID="1"/><UnAssigned AcctTypeID="2"/>
 </data>'

SELECT X.value('../@formID', 'int') FormID, X.value('@AcctTypeID', 'int') AcctTypeID
FROM @MyXMLString.nodes('data/UnAssigned') T(X)

<强>结果

FormID      AcctTypeID
----------- -----------
2           1
2           2