[英]SQL Select: Take value from XML field
I'm struggling to pull a value out of an XML field using SQL Select Statement. 我正在努力使用SQL Select语句从XML字段中提取一个值。
The XML field is Info, the table is results. XML字段是Info,表是结果。
<Screens>
<Results>
<Result ID="54722094-8b36-4a01-b089-3ecabebbf962" DataResponse=""
DataAction="" DataValue="2" DataScore="0" />
</Results>
</Screens>
I need to pull the attribute DataValue
. 我需要拉取属性
DataValue
。 For the record above, I'd be looking for 2. 对于上面的记录,我会寻找2。
Any help would be greatly appreciated. 任何帮助将不胜感激。
With SQL Server it was this: 使用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
Just replace my @tbl
with your actual table 只需用您的实际表替换我的
@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
The result is 2 and 99 结果是2和99
I assume that one Results
element ( s
) can have one or more Result
subelements: 我认为一个
Results
元件( s
)可以具有一个或多个Result
的子元素:
DECLARE @x XML
SET @x = N'<Screens>
<Results>
<Result ID="54722094-8b36-4a01-b089-3ecabebbf962" DataResponse=""
DataAction="" DataValue="2" DataScore="0" />
<Result ID="54722094-8b36-4a01-b089-aaaaaaaaaaaa" DataResponse=""
DataAction="" DataValue="3" DataScore="0" />
</Results>
</Screens>'
SELECT x.XmlCol.value('(@DataValue)[1]', 'INT') AS DataValueAsINT
FROM @x.nodes(N'Screens/Results/Result') x(XmlCol)
Results: 结果:
DataValueAsINT
--------------
2
3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.