16.20 - 例: ARRAYを使用した、2-D ARRAYデータ型とテーブルへの問合わせ - Teradata Vantage NewSQL Engine

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

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1143-162K-JPN

次の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);

次の問合わせは、操作の結果更新された適用範囲の参照[10:20][10:20]に構成要素を持つshot_aryタイプのARRAYを返します。評価中、shot1内の指定した適用範囲の参照にある各構成要素を、算術関数ARRAY_ADDを使用してshot2の対応する構成要素と組み合わせます。

SELECT ARRAY_ADD(shot1, shot2, NEW arrayVec(10, 20), 
   NEW arrayVec(10,20))
FROM seismic_data;

次の問合わせでは、shot1配列の指定した適用範囲の参照内のすべての構成要素にリテラル値9が加算されます。

SELECT ARRAY_ADD(shot1, 9, NEW arrayVec(10,10), NEW arrayVec(20,20)) FROM seismic_data;

次は、メソッドスタイルの構文を使用した同じ問合わせです。

SELECT shot1.ARRAY_ADD(9, NEW arrayVec(10,10), NEW arrayVec(20,20)) FROM seismic_data;

次の問合わせは、n-D ARRAYに算術演算を実行しながらフィルタ処理条件を使用する方法を示したものです。この例では、適用範囲[10:20][10:20]内で負の数を値に持つすべての構成要素にゼロを乗じます。

SELECT ARRAY_MUL(shot1, 0, NEW arrayVec(10,10), NEW arrayVec(20,20)) FROM seismic_data
WHERE ARRAY_COUNT_DISTINCT(ARRAY_LT(shot1, 0, NEW arrayVec(10,10), 
   NEW arrayVec(20,20)),0)>1;