我正在努力使用 SQL Select 语句从 XML 字段中提取值。
XML 字段是信息,表格是结果。
<Screens>
<Results>
<Result ID="54722094-8b36-4a01-b089-3ecabebbf962" DataResponse=""
DataAction="" DataValue="2" DataScore="0" />
</Results>
</Screens>
我需要拉取属性 DataValue
。对于上面的记录,我会寻找 2。
如有任何帮助,我们将不胜感激。
最佳答案
对于 SQL Server 是这样的:
DECLARE @xml XML=
'<Screens>
<Results>
<Result ID="54722094-8b36-4a01-b089-3ecabebbf962" DataResponse=""
DataAction="" DataValue="2" DataScore="0" />
</Results>
</Screens>';
SELECT @xml.value('(/Screens/Results/Result/@DataValue)[1]','int') AS DataValue
编辑:数据来自表
只需将我的 @tbl
替换为您的实际表格即可
--test scenario with two data rows, one has DataValue=2 the other =99
DECLARE @tbl TABLE(ID INT IDENTITY,info XML);
INSERT INTO @tbl(info) VALUES
(
'<Screens>
<Results>
<Result ID="54722094-8b36-4a01-b089-3ecabebbf962" DataResponse=""
DataAction="" DataValue="2" DataScore="0" />
</Results>
</Screens>'
)
,(
'<Screens>
<Results>
<Result ID="54722094-8b36-4a01-b089-3ecabebbf962" DataResponse=""
DataAction="" DataValue="99" DataScore="0" />
</Results>
</Screens>'
);
--this is the query
SELECT info.value('(/Screens/Results/Result/@DataValue)[1]','int') AS DataValue
FROM @tbl
结果是2和99
关于SQL 选择 : Take value from XML field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653117/