Sql server 解析存储在SQL行中的XML-MS SQL服务器
我有一个包含10个用户的表user\u table,其中一个列的名称为XML\u PATH。 XML_路径包含如下所示的XML文件:Sql server 解析存储在SQL行中的XML-MS SQL服务器,sql-server,xml,tsql,xquery,Sql Server,Xml,Tsql,Xquery,我有一个包含10个用户的表user\u table,其中一个列的名称为XML\u PATH。 XML_路径包含如下所示的XML文件: <Column> <Column Name="user_time_zone" DataType="String">GMT</Column> <Column Name="user_time_type" DataType="
<Column>
<Column Name="user_time_zone" DataType="String">GMT</Column>
<Column Name="user_time_type" DataType="String">24hrs</Column>
...
<Column Name="user_time_country" DataType="String">India</Column>
</Column>
我需要知道是否有可能编写SQL查询并获取用户\u TIME\u TYPE节点的值作为结果。您可以使用。例如:
DECLARE @Value XML = '
<Column>
<Column Name="user_time_zone" DataType="String">GMT</Column>
<Column Name="user_time_type" DataType="String">24hrs</Column>
<Column Name="user_time_country" DataType="String">India</Column>
</Column>
'
SELECT @Value.query('/Column/Column[@Name=''user_time_type'']/text()')
或者如果列类型不是XML
SELECT cast(XML_DATA as XML).query('/Column/Column[@Name=''user_time_type'']/text()')
FROM user_date
虽然这个问题已经得到了回答,但这里有一个更干净的解决方案 .nodes和.value XQuery方法的组合使用指定的数据类型提供精确的答案 SQL
请不要滥发标签,它们是为了吸引正确的观众,如果你使用不相关的标签,你会得到不相关的访问者。这不符合要求,我有一个专栏,它从用户数据中选择XML数据,这个XML数据有10个条目,因为用户数据表中有10个用户。这10个条目中的每个条目都有XML格式。我厌倦了使用DECLARE@Value XML=select XML\u DATA from user\u table,然后选择@Value.query'/Column/Column[@Name=user\u time\u type]/text',意思是返回了多个值,这是真的,因为我有多个条目10
SELECT cast(XML_DATA as XML).query('/Column/Column[@Name=''user_time_type'']/text()')
FROM user_date
-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, xmldata XML);
INSERT INTO @tbl (xmldata) VALUES
(N'<Column>
<Column Name="user_time_zone" DataType="String">GMT</Column>
<Column Name="user_time_type" DataType="String">24hrs</Column>
<Column Name="user_time_country" DataType="String">India</Column>
</Column>');
-- DDL and sample data population, end
SELECT c.value('(./text())[1]','VARCHAR(20)') AS user_time_type
FROM @tbl
CROSS APPLY xmldata.nodes('/Column/Column[@Name="user_time_type"]') AS t(c);
+----------------+
| user_time_type |
+----------------+
| 24hrs |
+----------------+