SQL Server内のXQuery演算内で相対パスを使用する簡単な方法はありますか?SQL XQuery算術内の相対パスの使用
以下のコードで、私は、オペレータの両側に/a/b/
を繰り返しています:
declare @x xml = '<a><b><x>10</x><y>20</y></b></a>'
select @x.value('((/a/b/x/text())[1] + (/a/b/y/text())[1])[1]','bigint')
詳細
NB:私は例では、私はSUM関数を使用することができ、上記ことを承知しています。 ..悲しいことに、私の実際のユースケースには当てはまりません。そこでは、複数の要素があり、それらの間でさまざまな操作が実行されます。
私はまた、以下のような何かをするnodes
オプションに精通してる:
select ab.b.value('((./x)[1] + (./y)[1])[1]','bigint')
from @x.nodes('/a/b') ab(b)
私もXMLではなく、カラムから来ているとき、このようなサブクエリをアクセスするためにouter apply
/cross apply
を使用して精通してい変数。それは現在私が取っているルートですが、それはちょっとした感じです。
私はこのようなソリューションを視覚化しています: select @x.value('(/a/b[(./x)[1] + (./y)[1]])[1]','bigint')
;フィルタが現在のパスのコンテキスト内の複数の要素にどのように適用されるかと同様に、それがどのように書かれているかは分かっていません(これも可能であると仮定して)。
偉大な解決策、君は – JohnLBevan