繁体   English   中英

迭代xml节点SQL Server上的值

Iterate values on xml nodes SQL Server

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试从每个XML节点提取所有值。 例如对于<Cash>节点,我想恢复值(0,1),但无法获取它

CREATE TABLE #TableXML (Col1 INT PRIMARY KEY, Col2 XML) 

INSERT INTO #TableXML 
VALUES (1,
'<CookedUP>
  <Evenement Calcul="16">
    <Cookie xmlns="http://services.ariel.morneausobeco.com/2007/02" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <AlternateOptionTypeCodes />
      <Cash>0</Cash>
      <CashInterest>0</CashInterest>
      <CashSource>Undefined</CashSource>
      <Code>A</Code>
      <SmallAmount>0</SmallAmount>
      <SmallAmountType>Undefined</SmallAmountType>
    </Cookie>
    <Cookie xmlns="http://services.ariel.morneausobeco.com/2007/02" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <AlternateOptionTypeCodes />
      <Cash>1</Cash>
      <CashInterest>2</CashInterest>
      <CashSource>Undefined</CashSource>
      <Code>B</Code>
      <SmallAmount>1</SmallAmount>
      <SmallAmountType>1</SmallAmountType>
    </Cookie>
  </Evenement>
</CookedUP> '
)

WITH XMLNAMESPACES ('http://services.ariel.morneausobeco.com/2007/02' AS ns)
SELECT 
    b.Col1,
    x.XmlCol.value('(ns:Cookie/ns:SmallAmount/text())[2]', 'int') AS SmallAmount,
    x.XmlCol.value('(ns:Cookie/ns:Cash/text())[2]', 'int') AS Cash
FROM
    #TableXML b
CROSS APPLY 
    b.Col2.nodes('CookedUP/Evenement') x(XmlCol);
1 个回复

稍微调整一下您已有的内容,就可以了。 直到Cookie节点,名称空间才起作用。

我将示例更新为表变量,尝试一下:

DECLARE @TableXML TABLE(Col1 int primary key, Col2 xml) 
Insert into @TableXML values ( 1,
'<CookedUP>
  <Evenement Calcul="16">
    <Cookie xmlns="http://services.ariel.morneausobeco.com/2007/02" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <AlternateOptionTypeCodes />
      <Cash>0</Cash>
      <CashInterest>0</CashInterest>
      <CashSource>Undefined</CashSource>
      <Code>A</Code>
      <SmallAmount>0</SmallAmount>
      <SmallAmountType>Undefined</SmallAmountType>
    </Cookie>
    <Cookie xmlns="http://services.ariel.morneausobeco.com/2007/02" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <AlternateOptionTypeCodes />
      <Cash>1</Cash>
      <CashInterest>2</CashInterest>
      <CashSource>Undefined</CashSource>
      <Code>B</Code>
      <SmallAmount>1</SmallAmount>
      <SmallAmountType>1</SmallAmountType>
    </Cookie>
  </Evenement>
</CookedUP> '
)


;WITH XMLNAMESPACES ('http://services.ariel.morneausobeco.com/2007/02' AS ns)
SELECT b.Col1
        --Also include the namespaces here with ns: for each "field" you are after contained within Cookie
       ,XmlCol.value('(./ns:SmallAmount)[1]', 'int') AS SmallAmount
       ,XmlCol.value('(./ns:Cash)[1]', 'int') AS Cash
       ,XmlCol.value('(./ns:Code)[1]', 'nvarchar(10)') AS Code
       ,XmlCol.value('(./ns:CashSource)[1]', 'nvarchar(10)') AS CashSource
FROM @TableXML b
CROSS APPLY b.Col2.nodes('/CookedUP/Evenement/ns:Cookie') AS x(XmlCol) --ns, the namespace, only at Cookie node.
1 用于在 XML 节点内迭代以检查值并返回记录的 SQL 查询

我的数据库表之一有多个记录。 在每条记录中,有一列存储以下类型的 XML。 我需要编写一个查询,它应该获取父节点内的记录,如果任何子节点完全只包含值 0。 在本例中,第四个节点全为 0。这满足条件,必须提取记录。 我可以知道如何在 SQL 中编写这个条件来获取这样的信息吗? 注意:父节点可能包含多 ...

2 如何使用SQL变量迭代XML节点

我在SQL Server 2008中有以下XML: 我想将类型的值更改为其他值。 我可以毫无问题地硬编码要更改的代码。 不管我把什么放在括号里,这都是“做正确的事”。 IOW,以上更改了第一个,将其更改为[3]则更改了第三个,依此类推。 我想更改所有这些,无论有多少。 ...

3 SQL查找XML节点值

在这里搜索并尝试了所有示例,但没有运气。 我想从此XML查找节点“ CustomID”的值: 我想要的(节点的)值是“ THIS IS ANSWER”。 我尝试了这个,但是没有运气: ...

5 XML:迭代获取每个节点元素的节点值或文本内容

这似乎是一个非常基本的问题。 但是我还不清楚。 这是问题 我有形式的xml: 我想逐个打印每个节点的文本内容。 另外,我们假设以前没有标签。 下面是示例代码 这里的输出是这样的: root : null project : null modelVer ...

6 如何在T-SQL中迭代XML字段的节点?

我有一个XML字段,我知道其中至少有一个“ChildNode”,但可能更多。 我试图在T-SQL中创建一个循环,它将每个ChildNode的XML作为VarChar(1000)并用它做一些逻辑。 当我尝试以下... 我收到以下错误:xml数据类型方法“value”的参数1必须是字符串 ...

2011-02-15 16:14:56 2 21435   tsql
7 使用SQL获取XML节点值

我正在使用SQL Server 2014,并且在构造查询时需要帮助,该查询将为我提供特定XML节点的所有值。 我有一个表,该表中的信息存储在xml中。 xml数据如下所示: 我只能使用此查询从表中每一行的第一个节点获取值。 所以我的结果是: 我需要的是以下内容: ...

8 使用 SQL 获取 XML 节点中的值

我在 SQL 表列中有一个 XML。 我需要解码这个 xml 并获取特定节点的值。 在下面找到我的 XML 我需要节点的值:registrationId、transactionId 和 status,我尝试了这个,但无法成功,因为我得到了空值: 任何帮助/更正将不胜感激 ...

10 从 SQL 列读取 XML 节点值

我正在尝试从 sql 列中的 xml 中提取数据并将其返回到查询结果中,但我一直在努力阅读此部分 xml。 我不确定我做错了什么,或者 xml 的结构方式是否需要不同的方法。 我尝试了没有属性和引用的更简单的 XML,并且能够从单个节点中提取。 这些是 XML 文件内容: 理想情况下,我希望T ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM