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