例: XML文書を行と列に変換する - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - XMLデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/kxe1590704060061.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1140
Product Category
Software
Teradata Vantage

XMLTABLE関数を使用すると、1つ以上のXML文書を行と列の形に変換することができます。これは、ノードのシーケンスを生成するための行問合わせ式を入力とします。各ノード シーケンスの結果がそれぞれ1行となります。一連の列問合わせ式により、列値のそれぞれがノードからどのように計算されるかが決定されます。

この例では、入力XML文書からitem要素をすべて検索し、検出された要素ごとに1行が生成されます。その列値は、その要素の下位にある要素および属性(ItemID やQuantity など)に基づいて生成されます。

SELECT X.*
FROM (SELECT * FROM customer WHERE customerID = 1) AS C,
   XMLTable (
      '/Customer/Order/Item'
      PASSING C.customerXML
      COLUMNS
         "Seqno" FOR ORDINALITY,
         "CustomerName" VARCHAR(64) PATH '../../Name',
         "OrderNumber" VARCHAR(32) PATH '../@Number',
         "OrderDate" DATE PATH '../@Date',
         "ItemID" VARCHAR(12) PATH '@ID',
         "Quantity" INTEGER PATH 'Quantity',
         "UnitPrice" DECIMAL(9,2),
         "TotalPrice" DECIMAL(9,2) PATH 'Price'
   ) AS X ("Sequence #", "Customer Name", "Order #", "Order Date", "Item ID", "Qty", "Unit Price", "Total Price");

問合わせの結果は、次のとおりです。

Sequence# Customer Name   Order#      Order Date    Item ID  Qty  Unit Price  Total Price
----------------------------------------------------------------------------------------
        1  John Hancock   NW-01-16366   12/02/28        001   10       29.50      295.00
        2  John Hancock   NW-01-16366   12/02/28        101    1      139.99      139.99