SQLクエリXML

 

-追加情報クエリ"黄色"に等しいUNAME値内のすべてのノード
Extra.exist( 't_UserPayLog SELECT * FROM // UNAMEの[= " 黄"]')= 1

 

/ * 
SQL XMLのエントリー:
    - jinjazzのことで
    --http://blog.csdn.net/jinjazz 
    
    1、XML:認識要素は、属性、値
    
    2、XPathの:役に立たない(Windowsのディレクトリ検索に類似のアドレス指定の言語を、 dirコマンド、当時)の壁を通り抜けた
                
                シンタックスを、シンタックスは、条件として組み合わせることができます:
                「」彼は言った、「..」父を意味し、 『/』は息子を意味し、 『//』は、将来の世代を表し、
                『名前』の名前で表現属性検索で示される「名前@」、検索
                
                「[条件]コレクション」条件のセットを取るのサブセットを表し、条件とすることができる
                    、数値の最後の()は、最後の():値 - などのデジタル
                    位置()<デジタル:ブール、名前=「条件」、名前=「条件」@ 
                ブール値を計算する際に組み込むことができる:およびまたは
    
    3、XQueryの。:前向きのSQLServerのXQueryの主題に基づいて、XPathクエリ言語は、以下の機能が含まれている
                (XPathの条件)が存在し:ノードが存在するかどうかを示すブール値を返し 
                、クエリ(XPathの条件):の修飾ノードによって新しいXML文書を返します
                値(XPathの条件、データ・タイプ):結果は、固有の条件のXPathである必要があり、指定されたスカラー値を返し 
  <著者>ジェームズ・マクガバン</著者>
                ノード(XPathの条件):返回由符合条件的节点组成的一行一列的结果表
* / 

宣言@dataのXML 
設定@データ=」
<書店> 
<ブックカテゴリ= "COOKING"> 
  <タイトルLANG = "EN">毎日イタリア語</タイトル> 
  <著者>ジャーダ・デ・ラウレンティス</著者> 
  <年> 2005 </年> 
  <価格> 30.00 </価格> 
</書籍> 
<ブックカテゴリ= "CHILDREN"> 
  <タイトルLANG = "JP" >ハリー・ポッター</タイトル> 
  <著者> J K.ローリング</著者> 
  <年> 2005 </年> 
  <価格> 29.99 </価格> 
</書籍> 
<ブックカテゴリ= "WEB"> 
  <タイトルLANG = "EN "> XQueryのキックスタート</タイトル> 
  <著者>パーBothner </著者> 
  <作者>クルトCagle </著者> 
  <作者>ジェームス・リン</著者>
  <著者>がVaidyanathan Nagarajan </著者> 
  <年> 2003 </年> 
  <価格> 49.99 </価格> 
</ブック> 
<ブックカテゴリ= "WEB"> 
  <タイトルLANG = "CN"> XML </タイトルを学びます> 
  <作者>エリック・T.レイ</著者> 
  <年> 2003 </年> 
  。。<価格> 39.95 </価格> 
</予約> 
書店>の</子
" 

-テスト文、あなたは構文を理解していない場合は、上記を参照してください。規則や指示は、XPathのXQuery関数

data.exist @選択します( '//ブック[カテゴリ= "WEB" @]')


--1は、文書化
SELECT @data 
任意の価格レベルのノードがあるかどうか、--2を
(選択の@ data.existは、 「//。価格」)
--- 3、すべての書籍のノードが取得
する@ data.query(「//ブック」を選択) 
--4、すべてのノードがlang属性含む取得する 
SELECTする@ data.query(「//ブック[を1]」)
--6、最初の2つのノードブックを取得します 
( '// * [data.query @選択 LANG @]')
--5、最初の本ノード入手
選択する@ data.query( '//ブック[位置()<= 2]')
最後に本ノード得7 I、
選択する@ data.query(「//ブック[最後の()] ')
--8、取得価格>すべてのブックのノード35 
(data.query @選択')//ブック[価格> 35]」
--9、すべてのノードがカテゴリ= "WEB"の本を取得する
選択しますdata.query @( '//ブック[カテゴリ= "WEB" @]')
--10、すべてのノードがタイトルLANG = "EN"ブックを得る
data.query(「//ブック/ @選択タイトル[@langを= "EN"] ')
--11、タイトルのlang = "EN"と価格>すべてのブックのノード35取得
を選択する@ data.query(' //ブック[ ./タイトル[@ LANG = "EN"]または価格> 35] ')
--12、取得LANGタイトル= "EN"と価格>最初の本(最初)のタイトル35 
を選択する@ data.query(' //ブック[ ./タイトル[@lang = "EN"]と価格>35] ')。値('(書籍/タイトル)[1] '' VARCHAR(MAX)「) 
12に相当する--13、
@ data.value SELECT( '/タイトル)(//ブック[[LANG = "EN"]。価格および> 35 @ ./タイトル] [1]'、 'VARCHAR(MAX)')値( '年[1]'、 'INT')年のように、 
 タイトルとしてTCvalue( 'タイトル[1]'、 'varchar型(最大)')、
--14タイトルLANG = "EN"を取得し、価格>最初の本(最初の1)のタイトルlangは35属性
を選択する@ data.value(「((//ブック[カテゴリ@ = "WEB"をし、 価格> 35] /タイトル)[1] / LANG @)[1] '' VARCHAR(MAX) ')
--15、最初の本のタイトルを獲得する
(ブック/タイトルTab.Col.valueを(SELECT' ) [1] '' VARCHAR(MAX) ')タイトルAS 
    書店(@ data.nodesから' 'タブ(COI)AS)
--16、各書籍の最初の著者を取得する
(Tab.Col.valueを選択' 'タイトルAS)著者[1] '' VARCHAR(MAX)
    //ブック(@ data.nodesから' ')タブ(COI)AS 
--17、すべての書籍のすべての情報へのアクセス
SELECT 
 タイトルTCvalue(' [1] '' VARCHAR(MAX) 'タイトルAS)、
 TCvalue('年[1] '' INT ')年AS、 
 TCauthor1として値( '著者[1]'、 'VARCHAR(MAX)')、 
 TCvalue( '著者[2]'、 'VARCHAR(MAX)')author2として、
 TCvalue( '価格[1]'、 'フロート')価格として、
 author3としてTCvalue( '著者[3]'、 'VARCHAR(MAX)')、
 TCvalue( '著者[4]'、 'VARCHAR(MAX)' )author4として
T(C)としてdata.nodes( '//ブック')@から
--18、获取不是日语(LANG!= "JP")且价格大于35的书的所有信息
選択
 TCvalue( 'タイトルを[ 1]」、 'varchar型(最大)')タイトルとして、
 TCvalue( '年[1]'、 'INT')は毎年のように、
 TCvalue( 'タイトル[1]'、 'varchar型(最大)')タイトル、など
 TCvalue ( '価格[1]'、 'フロート')価格として、
 author1としてTCvalue( '著者[1]'、 'VARCHAR(MAX)')、
 TCvalue( '著者[2]'、 'VARCHAR(MAX)') author2として、
 TCvalue( '著者[3]'、 'VARCHAR(MAX)')author3として、 
 TCvalue( '著者[4]'、 'VARCHAR(MAX)')author4として
T(C)としてdata.nodes( '//ブック[./タイトル[@lang!= "JP"]と価格> 35]')@から

  

おすすめ

転載: www.cnblogs.com/lb809663396/p/11125551.html
おすすめ