[英]Query XML in SQL Server
我有這樣的XML 格式 :
<Maximum.Edm.CodeIncludedInCalculation >
<CalculationsByProvince>
<Maximum.Edm.IncludedInByProvince Province="QC">
<RevenueCodeCalculations CalculationListType="RevenueCode">
<Maximum.Edm.CalculationIncluded Code="@Vacation" IsSelected="True" />
<Maximum.Edm.CalculationIncluded Code="@RRQ" IsSelected="True" />
<Maximum.Edm.CalculationIncluded Code="@EmploymentInsurance" IsSelected="True" />
[...]
</RevenueCodeCalculations>
<TaxableBenefitCalculations CalculationListType="TaxableBenefits">
<Maximum.Edm.CalculationIncluded Code="1" IsSelected="False" />
<Maximum.Edm.CalculationIncluded Code="AV. VIE FE" IsSelected="True" />
</TaxableBenefitCalculations>
<DeductionCodeCalculations CalculationListType="DeductionCode">
<Maximum.Edm.CalculationIncluded Code="123" IsSelected="False" />
<Maximum.Edm.CalculationIncluded Code="456" IsSelected="True" />
<Maximum.Edm.CalculationIncluded Code="AC" IsSelected="False" />
[...]
</DeductionCodeCalculations>
</Maximum.Edm.IncludedInByProvince>
<Maximum.Edm.IncludedInByProvince Province="ON">
[...]
</Maximum.Edm.IncludedInByProvince>
</CalculationsByProvince>
</Maximum.Edm.CodeIncludedInCalculation>
我想創建一個簡單的查詢,該查詢將返回每個CalculationIncluded
以及code
和IsSelected
值。 我的最終目標是創建一個存儲過程,該存儲過程將接收code
, province
和CalculationListType
並返回IsSelected
值。
我嘗試從此處 , 此處和此處使用示例,但我不斷得到null
或空值。
我嘗試使用以下示例之一進行查詢:
select * from
(select
pref.value('(text())[1]', 'varchar(32)') as RoleName
from
Payroll.RevenueCode CROSS APPLY
IncludeInCalculation.nodes('/Maximum.Edm.CodeIncludedInCalculation/CalculationsByProvince/Maximum.Edm.IncludedInByProvince/RevenueCodeCalculations') AS IncludeInCalculation(pref)
) as Result
我的最終目標是創建一個存儲過程,該存儲過程將接收代碼,省份和CalculationListType並返回IsSelected值。
這不需要存儲過程...
以下將返回1(= true)或0(= false)或NULL(=不存在)
DECLARE @Province NVARCHAR(100)='QC';
DECLARE @ListType NVARCHAR(100)='RevenueCode';
DECLARE @Code NVARCHAR(100)='@EmploymentInsurance'
SELECT @xml.value(N'(/Maximum.Edm.CodeIncludedInCalculation
/CalculationsByProvince
/Maximum.Edm.IncludedInByProvince[@Province=sql:variable("@Province")]
/RevenueCodeCalculations[@CalculationListType=sql:variable("@ListType")]
/Maximum.Edm.CalculationIncluded[@Code=sql:variable("@Code")]/@IsSelected)[1]',N'bit')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.