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
BEGINDECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose', 'sloth', 'mule');SELECT ARRAY_GET(favourite_animals, 2);END--Output: GoatARRAY_LENGTH
この関数は、与えられた配列の長さをintegerとして返します。
Syntax
ARRAY_LENGTH(<array>)- <array>は長さを決定したい配列で、
object型です。
Usage
BEGINDECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose', 'sloth', 'mule');SELECT ARRAY_LENGTH(favourite_animals);END--Output: 5ARRAY_ADD
この関数は、指定された配列に配列または単一の値を追加します。
Syntax
newArray = ARRAY_ADD(<array>, <array or single_value>)- <array>は要素を追加したい配列で、
objectの型でなければなりません; - <array or single_value>は、配列に追加したい単一の要素または要素の配列で、どちらも与えられた配列の要素と同じ型でなければなりません;
- 与えられたパラメータが必要な型と不一致の場合は例外がスローされます;
- この関数は、
object型の新しいマージされた配列を返します。
Usage
BEGINDECLARE 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]ENDARRAY_SUB
この関数は、指定された配列の要素を、指定された位置から始まる指定された量だけ含む配列を返します。
Syntax
ARRAY_SUB(<array>, <start>, <count>)- <array>は部分要素を抽出したい配列で、
objectの型でなければなりません; - <start>は配列中の開始位置で(最初の位置は1であることを覚えておいてください)、
integerの型でなければなりません。<start>が配列の長さを超える場合、NULLが返されます; - <count>は配列から抜き出したい要素数で、<start>から始まります。型は
integerで、正の数でなければなりません。<count>が<start>の後の残りの要素を超えている場合、この関数は最後まで見つけたすべての要素を返します; - 与えられたパラメータが必要な型と不一致の場合は例外がスローされます;
- この関数は、
object型の新しいマージされた配列を返します。
Usage
BEGINDECLARE 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: NULLSELECT ARRAY_SUB(favourite_animals, 0, 5);--Output: NULLENDARRAY_IN
この関数は、指定した値が指定した配列の要素にマッチするかどうかを判定します。そうでない場合は0が返されます。大文字と小文字は区別されますのでご注意ください。
Syntax
ARRAY_IN(<array>, <value>)- <array>は部分要素をチェックしたい配列で、
objectの型でなければなりません; - <value>は、配列中に存在する場合に知りたい部分要素です。どんな型でもかまいませんが、配列中の要素と同じ型でなければなりません (例えば、1は '1' とはマッチしません)。また、大文字小文字は区別されます;
- この関数は,配列中の指定された要素のインデックスを,インデックス 1 から求めます.要素が複数の値にマッチする場合は、最初に出現した値のインデックスが返されます。一致する値がない場合、結果は0 になります。結果のデータ型は
integerです。
Usage
BEGINDECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose', 'sloth', 'mule', '1');SELECT ARRAY_IN(favourite_animals, 'goat');--Output: 2SELECT ARRAY_IN(favourite_animals, 'Goat');--Output: 0SELECT ARRAY_IN(favourite_animals, 'penguin, goat');--Output: 0SELECT ARRAY_IN(favourite_animals, ('penguin, goat'));--Output: 0SELECT ARRAY_IN(favourite_animals, 1);--Output: 0ENDARRAY_LIKE
この関数は、配列に対して LIKE 検索を行い、一致する要素が見つかったかどうかを判定します。大文字と小文字は区別されますのでご注意ください。
Syntax
ARRAY_LIKE(<array>, <like-string>)- <array>は検索したい配列で、
objectの型でなければなりません; - <like-string>は配列から探したい文字列です。
stringの型でなければならず、大文字と小文字は区別されます。<LIKE-string>をWHERE LIKEのように使うことに注意してください; - この関数は、マッチした場合は
TRUEを返し、マッチしない場合はFALSEを返します。
Usage
BEGINDECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose', 'sloth', 'mule');SELECT ARRAY_LIKE(favourite_animals, 'peng%');--Output: TRUESELECT ARRAY_LIKE(favourite_animals, 'penguin');--Output: TRUESELECT ARRAY_LIKE(favourite_animals, 'peng');--Output: FALSESELECT ARRAY_LIKE(favourite_animals, 'Peng%');--Output: FALSEDECLARE object favourite_numbers = array(1, 3, 5);SELECT array_like(favourite_numbers, '1');--Output: TRUEENDARRAY_LIKE_REGEX
この関数は、配列に対して RegEx 検索を実行し、一致する要素が見つかったかどうかを判定します。
Syntax
ARRAY_LIKE_REGEX(<array>, <regex-string>)- <array>は検索したい配列で、
objectの型でなければなりません; - <regex-string>は配列の要素に対してチェックしたい正規表現で、
stringの型でなければなりません; - この関数は、マッチが見つかれば
TRUEを返し、見つからなければFALSEを返します。
Usage
BEGINDECLARE OBJECT favourite_animals = ARRAY('penguin', 'goat', 'goose', 'sloth', 'mule');SELECT ARRAY_LIKE_REGEX(favourite_animals, 'penguin');--Output: TRUESELECT ARRAY_LIKE_REGEX(favourite_animals, 'pen[a-z]*n');--Output: TRUESELECT ARRAY_LIKE_REGEX(favourite_animals, 'pen');--Output: TRUESELECT ARRAY_LIKE_REGEX(favourite_animals, 'PENGUIN');--Output: FALSESELECT ARRAY_LIKE_REGEX(favourite_animals, '(?i)PENGUIN');--Output: TRUEEND