例: OEXTENDを使用した、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次元のARRAYデータ型およびテーブルについて考えてみましょう。

CREATE TYPE phonenumbers AS VARRAY(20) OF CHAR(10);
CREATE TABLE employee_info (eno INTEGER, phonelist phonenumbers);

テーブルには次の値が取り込まれます。

/* The first 2 elements are populated; the rest are uninitialized. */
INSERT INTO employee_info VALUES (1, 
   phonenumbers('1112223333', '6195551234'));
/* Empty ARRAY instance */
INSERT INTO employee_info VALUES (2, 
   phonenumbers());
/* Update empty ARRAY instance such that element 3 is set to a value;
   Then elements 1 and 2 are set to NULL, the rest are uninitialized */
UPDATE employee_info
SET phonelist[3] = '8584850000'
WHERE id = 2;

次の問合わせは、単一のNULL構成要素でphonelist配列を拡張します。

SELECT eno, phonelist.OEXTEND()
FROM employee_info;

問合わせの結果を次に示します。

ENO         phonelist.OEXTEND()
---         -------------------
 1           ('1112223333', '6195551234',NULL)
 2           (NULL,NULL,'8584850000',NULL)

次の問合わせは、3つのNULL構成要素でphonelist配列を拡張します。

SELECT eno, phonelist.OEXTEND(3)
FROM employee_info;

問合わせの結果を次に示します。

ENO         phonelist.OEXTEND(3)
---         --------------------
 1           ('1112223333', '6195551234',NULL,NULL,NULL)
 2           (NULL,NULL,'8584850000',NULL,NULL,NULL)

次の問合わせは、構成要素1を2つコピーして、phonelist配列を拡張します。

SELECT eno, phonelist.OEXTEND(2,1)
FROM employee_info
WHERE eno = 1;

問合わせの結果を次に示します。

ENO         phonelist.OEXTEND(2,1)
---         ----------------------
 1           ('1112223333', '6195551234', '1112223333', '1112223333')

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

SELECT eno, OEXTEND(phonelist,2,1)
FROM employee_info
WHERE eno = 1;