2

我的表中存储了 XML。此表具有列 id 类型 int 和值类型 XML。我正在使用 SQL Server 2012。

XML 看起来像这样:

 <?xml version="1.0" encoding="utf-16"?>
 <Weather>
 <Forecast>
 <Description>sky is clear</Description>
 <Date>6.9.2013 23:50:36</Date>
 <MinTemp>13</MinTemp>
 <MaxTemp>13</MaxTemp>
 <Pressure>995</Pressure>
 <Humidity>68</Humidity>
 </Forecast>
 </Weather>

此 XML 最多可以有 Forecast 部分。如何使用简单的 SELECT 语句获取例如湿度值?

我一直在尝试我在这里找到的几个东西,但我一直得到 NULL 所以这就是我问这个问题的原因。请帮忙...

4

2 回答 2

2

如果您的 xml 中有多个 Forecast,请使用节点函数:

select
    id, d.c.value('Humidity[1]', 'bigint') as Humidity
from test as t
    outer apply t.Data.nodes('Weather/Forecast') as d(c)

sql fiddle demo

于 2013-09-09T19:29:16.683 回答
1

试试这样: -

select
  columnname
from
  MyTable
where
  columnname.value('(/Weather/Forecast)[1]', 'varchar(max)') like 'StringToSearchFor'

或如此链接中所建议的那样:-

SELECT 
[xmlField].value('(/Weather//Forecast/Description/node())[1]', 'nvarchar(max)') as columname
FROM [myTable]
于 2013-09-09T19:02:25.970 回答