16.20 - 例: XMLTABLEを使用してシーケンスから項目を取得するXQuery/XPath問合わせ - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ XMLデータ型

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1140-162K-JPN
Language
日本語 (日本)
以下の問合わせは、XMLTABLEを使用してシーケンスから項目を取得します。
SELECT x.item
FROM xmltab,
XMLTABLE('$custXML/customers/customer'
          passing xmltab.xmldoc as "custXML"
          COLUMNS "item" XML PATH "."
         ) AS x;

この問合わせの結果は複数の行になり、各行はitem列にcustomer要素が1つずつ入ります。

行#1:
<customer>
   <Name>John Hancock</Name>
   <Address>100 1st Street One City, CA 12345</Address>
   <Phone1>(999)9999-999</Phone1>
   <Phone2>(999)9999-998</Phone2>
   <Fax>(999)9999-997</Fax>
   <Email>John@somecompany.com</Email>
   <order Number="NW-01-16366" Date="Feb/28/2001">
      <Contact>Mary Shannon</Contact>
      <Phone>(987)6543-210</Phone>
      <ShipTo>Widgets Inc., 123 Regency Parkway, Portland, OR 43211</ShipTo>
      <SubTotal>2355.00</SubTotal>
      <Tax>141.50</Tax>
      <Total>2496.50</Total>
      <item ID="001">
         <Quantity>100</Quantity>
         <PartNumber>F54709</PartNumber>
         <Description/>
         <UnitPrice>23.55</UnitPrice>
         <Price>2355.00</Price>
      </item>
   </order>
</customer>
行#2:
<customer>
   <Name>Jim Smith</Name>
   <Address>200 2nd Street, San Diego, CA 12345</Address>
   <Phone1>(858)555-1234</Phone1>
   <Phone2>(858)555-1234</Phone2>
   <Fax>(858)555-9876</Fax>
   <Email>Jim@somecompany.com</Email>
   <order Number="JS-01-16366" Date="Feb/29/2001">
      <Contact>Jim Smith</Contact>
      <Phone>(858)555-1234</Phone>
      <ShipTo>Acme co., 2467 Pioneer Road, San Diego, CA 12345</ShipTo>
      <SubTotal>1242.00</SubTotal>
      <Tax>141.50</Tax>
      <Total>1383.50</Total>
      <item ID="001">
         <Quantity>10</Quantity>
         <PartNumber>F54709</PartNumber>
         <Description/>
         <UnitPrice>124.20</UnitPrice>
         <Price>1242.00</Price>
      </item>
   </order>
</customer>