【问题标题】:Create a query on unstructured XML data type in SQL Server在 SQL Server 中创建对非结构化 XML 数据类型的查询
【发布时间】:2017-05-07 06:58:51
【问题描述】:

我有一个在 SQL Server 中保存 xml 数据的列。我的列中有 2 个值,数据如下所示:

<StoreSurvey>
    <BankName>United Security</BankName>
    <BusinessType>BM</BusinessType>
</StoreSurvey>

还有这个:

<StoreSurvey>
    <AnnualSales>2000</AnnualSales>
    <BankName>United Security</BankName>
    <BusinessType>BM</BusinessType>
</StoreSurvey>

如您所见,这两个值在AnnualSales 上有所不同。如何编写查询以返回 AnnualSales=2000 的记录?

对不起,我是 XML 数据类型的新手。

【问题讨论】:

    标签: sql sql-server xml


    【解决方案1】:

    您的问题不清楚您是要求加入两个结果集还是过滤年销售额 = 2000 的记录

    这是基于假设数据的示例

    Declare @XmlStr XML;
    SET @XmlStr='<StoreSurvey>
      <AnnualSales>2000</AnnualSales>
      <BankName>United Security</BankName>
      <BusinessType>BM</BusinessType>
    </StoreSurvey>
    
    <StoreSurvey>
      <BankName>United Security</BankName>
      <BusinessType>BM</BusinessType>
    </StoreSurvey>';
    

    您只能获得年销售额 = 2000 的脚本

    SELECT
        [Table].[Column].value('AnnualSales[1]', 'int') as 'AnnualSales ',
        [Table].[Column].value('BankName[1]', 'varchar(20)') as 'BankName',
        [Table].[Column].value('BusinessType[1]', 'varchar(50)') as 'BusinessType'
    FROM 
        @XmlStr.nodes('/StoreSurvey') as [Table]([Column])
    WHERE 
        [Table].[Column].value('(AnnualSales[1])[1]', 'int') = 2000
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 2018-11-17
      • 2018-09-07
      相关资源
      最近更新 更多