例: 1-D ARRAYデータ型とテーブルへの問合わせ - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データ タイプおよびリテラル

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/zsn1556242031050.ditamap
dita:ditavalPath
ja-JP/zsn1556242031050.ditaval
dita:id
B035-1143
Product Category
Software
Teradata Vantage

次の1-D ARRAYデータ型およびテーブルについて考えてみましょう。

CREATE TYPE item_price AS DECIMAL(7,2) ARRAY[10];
CREATE TABLE inventory (itemkind INTEGER,
                        regular_price item_price,
                        sale_price item_price);

sale_priceとregular_priceという配列の構成要素の値が次のようになっているとします。

sale_price[1:10] =  50, 100,  200,  90,  250, 550, 200, 200,  50,  75
regular_price[1:10] = 100, 300, 230, 110, 500, 550, 200, 400, 100, 150

次の問合わせは、構成要素のタイプBYTEINTの適用範囲の参照[1:10]で1-D ARRAYを返します。評価中、regular_price配列内の指定した適用範囲[5:10]にある各構成要素を、リレーショナル関数ARRAY_GTを使用してsale_price配列の対応する構成要素と比較します。出力配列内の結果の値は、ゼロまたはまたはゼロ以外の適用範囲内の構成要素の数、そして、配列のそれ以外のすべての構成要素についてはNULLとなります。

SELECT ARRAY_GT(regular_price, sale_price, 5,10)
FROM inventory;

問合わせの出力は、次の値を持つ1-D ARRAYです。

output_array[1:10] = [ NULL, NULL, NULL, NULL, 1, 0, 0, 1, 1, 1]

次の問合わせは、item_priceタイプの適用範囲の参照[1:10]で1-D ARRAYを返します。評価中、regular_price配列内の指定した適用範囲[5:10]にある各構成要素を、リレーショナル関数ARRAY_GTを使用してsale_price配列の対応する構成要素と比較します。構成要素のタイプBYTEINTの値(ゼロまたはゼロ以外の数)からなる結果のARRAYは、regular_price配列の対応する構成要素の値を乗じたものです。

SELECT ARRAY_MUL(regular_price, ARRAY_GT(sale_price, regular_price, 5, 10))
FROM inventory;

問合わせの出力は、次の値を持つ1-D ARRAYです。

output_array[1:10] = [ NULL, NULL, NULL, NULL, 500, 0, 0, 400, 100, 150]

次の問合わせでは、リレーショナル関数ARRAY_LTで1-D ARRAY sale_priceの適用範囲内にある各構成要素をリテラル値100と比較します。構成要素の値が100より小さい場合、比較関数はゼロ以外の値を返し、それ以外の場合、条件が満たされていない場合は0を、構成要素が初期化されない場合はNULLを返します。item_price ARRAYタイプの1-D ARRAYは、入力1-D ARRAYの各構成要素の対応する値が設定されて返ります。

SELECT ARRAY_LT(sale_price,100)
FROM inventory;

問合わせの出力は、次の値を持つ1-D ARRAYです。

output_array[1:10] = [ 1, 0 , 0, 1, 0, 0, 0, 0, 1, 1]