Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将SQL Server 2008表列转换为XML并聚合xpath值_Sql Server_Xml_Sql Server 2008 - Fatal编程技术网

Sql server 将SQL Server 2008表列转换为XML并聚合xpath值

Sql server 将SQL Server 2008表列转换为XML并聚合xpath值,sql-server,xml,sql-server-2008,Sql Server,Xml,Sql Server 2008,我在NVARCHAR中存储了一个包含xml的表。就是这样 xml看起来像 <Container> <Data> <SomeNode>val1</SomeNode> </Data> <Data> <SomeNode>val2</SomeNode> </Data> </Container> 这给了我一个节点列表。在这里,我迷失了方向:如何将其展平为

我在
NVARCHAR
中存储了一个包含xml的表。就是这样

xml看起来像

<Container>
  <Data>
    <SomeNode>val1</SomeNode>
  </Data>
  <Data>
    <SomeNode>val2</SomeNode>
  </Data>
</Container>
这给了我一个节点列表。在这里,我迷失了方向:如何将其展平为单个值?

有两种方法:

  • 将text()函数添加到xquery
  • 使用节点法

  • 你是说查询('//SomeNode/text()')?那只是粘上了val0val1,val2,val3val4,这不是我需要的抱歉,我还有别的想法,试试第二种方法,这是你需要的
    SELECT CAST(XmlColumn AS XML).query('//SomeNode') FROM ThatTableWithXmlInStrings 
    
    select T2.X.value('text()[1]', 'nvarchar(10)')
    from ThatTableWithXmlInStrings
      cross apply (select cast(XmlColumn as xml)) T1(X)
      cross apply T1.X.nodes('/Container/Data/SomeNode') as T2(X)