我有一列在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数据类型方面很陌生。
由于您的问题是不清楚您是要求加入两个结果集还是过滤记录,其中年销售额 = 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