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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1143-171K-JPN
Language
日本語 (日本)

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