次の2-D ARRAYデータ型およびテーブルについて考えてみましょう。
CREATE TYPE shot_ary AS VARRAY(1:50)(1:50) OF INTEGER DEFAULT NULL; CREATE TABLE seismic_data ( id INTEGER, shot1 shot_ary, shot2 shot_ary);
次の問合わせは、構成要素のタイプがINTEGERの2-D ARRAYを返します。出力配列のサイズは、入力配列引数のサイズと同じです。評価中、shot1配列内の位置[5][10]にある構成要素が値5と比較されます。構成要素が5より大きい場合、出力配列にある対応する構成要素の値がゼロ以外の値に設定されます。その他の場合は0に設定されます。出力配列内のその他すべての構成要素はNULLに設定されます。
SELECT ARRAY_GT(shot1, 5, NEW arrayVec(5,5), NEW arrayVec(10,10)) FROM seismic_data;
次は、メソッドスタイルの構文を使用した同じ問合わせです。
SELECT shot1.ARRAY_GT(5, NEW arrayVec(5,5), NEW arrayVec(10,10)) FROM seismic_data;
次の問合わせでは、リレーショナル関数ARRAY_LTで2-D ARRAY shot1の適用範囲の参照[3:5][8:10]内にある各構成要素をリテラル値0と比較します。構成要素の値が0より小さい場合、比較関数は0を返し、それ以外の場合ゼロ以外の値を返します。shot_aryタイプの結果の配列は、shot1配列を乗じたものです。
SELECT ARRAY_MUL(shot1, ARRAY_LT(shot1, 0, NEW arrayVec(3,8), NEW arrayVec(5,10))) FROM seismic_data;