Qlikview SQL:检索 Xml 列作为数据

Qlikview SQL: Retrieving Xml columns as data

我在 SQL 服务器中有一个带有 table 'Reports' 的数据库。其中 table 是一个名为 'Snippet' 的列。此列的类型为 XML。 我现在想使用 XML 列中的数据。到目前为止我试过的代码是:

SQL SELECT
T.ref.value ('Name[1]', 'varchar(50)') as Name,
T.ref.value ('Temperature[1]', 'varchar(50)') as Temperature
FROM rLoyalty.[dbo].[Reports] CROSS APPLY xml.nodes ('/HARDWARE_INFO/CPU_INFO/CORE') as T(ref);

我的 xml 文件如下所示:

<HARDWARE_INFO>
  <CPU_INFO>
    <CORE>
      <NAME>CPU Core #1</NAME>
      <TEMPERATURE>59</TEMPERATURE>
    </CORE>
    <CORE>
      <NAME>CPU Core #2</NAME>
      <TEMPERATURE>58</TEMPERATURE>
    </CORE>
    <CORE>
      <NAME>CPU Package</NAME>
      <TEMPERATURE>59</TEMPERATURE>
    </CORE>
  </CPU_INFO>
</HARDWARE_INFO>

但这给了我错误:ErrorSource:Microsoft OLE DB Provider for SQL Server,ErrorMsg:XMLDT 方法 'nodes' 只能在 'nodes' 类型的列上调用=29=].

使用Snippet.nodes代替xml.nodes

Snippet 是数据类型为 xml

的列名

您在此 XML 列上使用了 nodes 方法。

xml.nodes 没有任何意义,因为(据我所知)您没有名为 xml

的专栏

这将是最终代码

SELECT
T.ref.value ('Name[1]', 'varchar(50)') as Name,
T.ref.value ('Temperature[1]', 'varchar(50)') as Temperature
FROM rLoyalty.[dbo].[Reports] 
CROSS APPLY 
Snippet.nodes ('/HARDWARE_INFO/CPU_INFO/CORE') as T(ref);