次の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]