次の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 the 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;
次の問合わせは、phonelist配列の構成要素2に値が含まれているかどうかを確認します。
SELECT eno, phonelist.OEXISTS(2) FROM employee_info;
問合わせの結果を次に示します。
ENO phonelist.OEXISTS(2) --- -------------------- 1 1 (element 2 contains a value that is non-NULL) 2 1 (element 2 contains a NULL)
次の問合わせは、phonelist配列の構成要素3に値が含まれているかどうかを確認します。
SELECT eno, phonelist.OEXISTS(3) FROM employee_info;
問合わせの結果を次に示します。
ENO phonelist.OEXISTS(3) --- -------------------- 1 0 (element 3 is in an uninitialized state) 2 1 (element 3 contains a value that is non-NULL)
次は、関数スタイルの構文を使用した同じ問合わせです。
SELECT eno, OEXISTS(phonelist, 3) FROM employee_info;