Declaring Arrays

注意すべき重要な点は、CData Virtuality Server では配列のインデックスは1から始まるということです。つまり、my_array[1]は配列の最初の要素を返し、my_array[0]NULLを返します。

ARAYは次のように宣言します:

BEGIN
DECLARE STRING[] my_array = ARRAY('John','Paul', 'George','Stuart');
SELECT my_array;
END;;
--Output: [John, Paul, George, Stuart]

配列の値を再代入することができます。

BEGIN
DECLARE STRING[] my_array = ARRAY('John','Paul', 'George','Stuart');
my_array[4] = 'Ringo';
SELECT my_array;
END;;
--Output: [John, Paul, George, Ringo]

ARRAY_GET

この関数は、与えられたインデックスにある配列の要素をobjectとして返します。

Syntax

ARRAY_GET(<array>, <index>)
  • <array>は要素を取り出したい配列で、objectの型でなければなりません;
  • <index>は抽出される要素の位置(位置1から始まる)で、integerの型でなければなりません。

Usage

BEGIN
DECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose', 'sloth', 'mule');
SELECT ARRAY_GET(favourite_animals, 2);
END
--Output: Goat

ARRAY_LENGTH

この関数は、与えられた配列の長さをintegerとして返します。

Syntax

ARRAY_LENGTH(<array>)
  • <array>は長さを決定したい配列で、object型です。

Usage

BEGIN
DECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose', 'sloth', 'mule');
SELECT ARRAY_LENGTH(favourite_animals);
END
--Output: 5

ARRAY_ADD

この関数は、指定された配列に配列または単一の値を追加します。

Syntax

newArray = ARRAY_ADD(<array>, <array or single_value>)
  • <array>は要素を追加したい配列で、objectの型でなければなりません;
  • <array or single_value>は、配列に追加したい単一の要素または要素の配列で、どちらも与えられた配列の要素と同じ型でなければなりません;
  • 与えられたパラメータが必要な型と不一致の場合は例外がスローされます;
  • この関数は、object型の新しいマージされた配列を返します。

Usage

BEGIN
DECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose');
 
SELECT ARRAY_ADD(favourite_animals, 'sloth');
--Output: [penguin, goat, goose, sloth]
 
SELECT ARRAY_ADD(favourite_animals, ('sloth', 'mule'));
--Output: [penguin, goat, goose, sloth, mule]
END

ARRAY_SUB

この関数は、指定された配列の要素を、指定された位置から始まる指定された量だけ含む配列を返します。

Syntax

ARRAY_SUB(<array>, <start>, <count>)
  • <array>は部分要素を抽出したい配列で、objectの型でなければなりません;
  • <start>は配列中の開始位置で(最初の位置は1であることを覚えておいてください)、integerの型でなければなりません。<start>が配列の長さを超える場合、NULLが返されます;
  • <count>は配列から抜き出したい要素数で、<start>から始まります。型はintegerで、正の数でなければなりません。<count><start>の後の残りの要素を超えている場合、この関数は最後まで見つけたすべての要素を返します;
  • 与えられたパラメータが必要な型と不一致の場合は例外がスローされます;
  • この関数は、object型の新しいマージされた配列を返します。

Usage

BEGIN
DECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose', 'sloth', 'mule');
 
SELECT ARRAY_SUB(favourite_animals, 3, 2);
--Output: [goose, sloth]
SELECT ARRAY_SUB(favourite_animals, 3, 10);
--Output: [goose, sloth, mule]
SELECT ARRAY_SUB(favourite_animals, 7, 10);
--Output: NULL
SELECT ARRAY_SUB(favourite_animals, 0, 5);
--Output: NULL
END

ARRAY_IN

この関数は、指定した値が指定した配列の要素にマッチするかどうかを判定します。そうでない場合は0が返されます。大文字と小文字は区別されますのでご注意ください。

Syntax

ARRAY_IN(<array>, <value>)
  • <array>は部分要素をチェックしたい配列で、objectの型でなければなりません;
  • <value>は、配列中に存在する場合に知りたい部分要素です。どんな型でもかまいませんが、配列中の要素と同じ型でなければなりません (例えば、1は '1' とはマッチしません)。また、大文字小文字は区別されます;
  • この関数は,配列中の指定された要素のインデックスを,インデックス 1 から求めます.要素が複数の値にマッチする場合は、最初に出現した値のインデックスが返されます。一致する値がない場合、結果は0 になります。結果のデータ型はintegerです。

Usage

BEGIN
DECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose', 'sloth', 'mule', '1');
 
SELECT ARRAY_IN(favourite_animals, 'goat');
--Output: 2
SELECT ARRAY_IN(favourite_animals, 'Goat');
--Output: 0
SELECT ARRAY_IN(favourite_animals, 'penguin, goat');
--Output: 0
SELECT ARRAY_IN(favourite_animals, ('penguin, goat'));
--Output: 0
SELECT ARRAY_IN(favourite_animals, 1);
--Output: 0
END

ARRAY_LIKE

この関数は、配列に対して LIKE 検索を行い、一致する要素が見つかったかどうかを判定します。大文字と小文字は区別されますのでご注意ください。

Syntax

ARRAY_LIKE(<array>, <like-string>)
  • <array>は検索したい配列で、objectの型でなければなりません;
  • <like-string>は配列から探したい文字列です。stringの型でなければならず、大文字と小文字は区別されます。<LIKE-string>WHERE LIKEのように使うことに注意してください;
  • この関数は、マッチした場合はTRUEを返し、マッチしない場合はFALSEを返します。

Usage

BEGIN
DECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose', 'sloth', 'mule');
 
SELECT ARRAY_LIKE(favourite_animals, 'peng%');
--Output: TRUE
SELECT ARRAY_LIKE(favourite_animals, 'penguin');
--Output: TRUE
SELECT ARRAY_LIKE(favourite_animals, 'peng');
--Output: FALSE
SELECT ARRAY_LIKE(favourite_animals, 'Peng%');
--Output: FALSE
 
DECLARE object favourite_numbers = array(1, 3, 5);
 
SELECT array_like(favourite_numbers, '1');
--Output: TRUE
END

ARRAY_LIKE_REGEX

この関数は、配列に対して RegEx 検索を実行し、一致する要素が見つかったかどうかを判定します。

Syntax

ARRAY_LIKE_REGEX(<array>, <regex-string>)
  • <array>は検索したい配列で、objectの型でなければなりません;
  • <regex-string>は配列の要素に対してチェックしたい正規表現で、stringの型でなければなりません;
  • この関数は、マッチが見つかればTRUEを返し、見つからなければFALSEを返します。

Usage

BEGIN
DECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose', 'sloth', 'mule');
 
SELECT ARRAY_LIKE_REGEX(favourite_animals, 'penguin');
--Output: TRUE
SELECT ARRAY_LIKE_REGEX(favourite_animals, 'pen[a-z]*n');
--Output: TRUE
SELECT ARRAY_LIKE_REGEX(favourite_animals, 'pen');
--Output: TRUE
SELECT ARRAY_LIKE_REGEX(favourite_animals, 'PENGUIN');
--Output: FALSE
SELECT ARRAY_LIKE_REGEX(favourite_animals, '(?i)PENGUIN');
--Output: TRUE
END