0

他の投稿と同様に、たとえば、次のような xml 列があると仮定して、Xml 列に基準を適用してテーブルから行を取得する必要があります。

<DynamicProfile xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WinTest">
  <AllData xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <d2p1:KeyValueOfstringstring>
      <d2p1:Key>One</d2p1:Key>
      <d2p1:Value>1</d2p1:Value>
    </d2p1:KeyValueOfstringstring>
    <d2p1:KeyValueOfstringstring>
      <d2p1:Key>Two</d2p1:Key>
      <d2p1:Value>2</d2p1:Value>
    </d2p1:KeyValueOfstringstring>
  </AllData>
</DynamicProfile>

<d2p1:Key> = 'some key value'私のクエリは、 node value AND node valueのすべての行を返すことができます<d2p1Value = 'some value value'

KEY ノードが列名を表し、Value ノードが列の値を表す動的テーブルと同じように想像してください。

キー ノードと値ノードが連続していないため、次のクエリは機能しません。

select * from MyTable where
MyXmlField.exist('//d2p1:Key[.="One"]') = 1
AND MyXmlField.exist('//d2p1:Value[.="1"]') = 1 
4

1 に答える 1

2

2つの別々の検索として検索する代わりに//d2p1:key[.="One"]//d2p1:Value[.="1"]次のように、両方を同時に検索する単一のクエリを実行します。

//d2p1:KeyValueOfstringstring[./d2p1:Key="One"][./d2p1:Value=1]

于 2012-05-09T16:01:31.943 に答える