array_contains_seq
array2 のすべての要素が、同じ順序で array1 に現れるかどうかを確認します。したがって、この関数は、array1 = prefix + array2 + suffix
の場合にのみ 1 を返します。
例えば:
select array_contains_seq([1,2,3,4], [1,2,3]);
は 1 を返します。select array_contains_seq([1,2,3,4], [4,3]);
は 0 を返します。
この関数は v3.3 以降でサポートされています。
構文
BOOLEAN array_contains_seq(arr1, arr2)
パラメータ
arr
: 比較する 2 つの配列。この構文は、arr2
が arr1
の部分集合であり、同じ順序であるかどうかを確認します。
2 つの配列内の要素のデータ型は同じでなければなりません。StarRocks がサポートする配列要素のデータ型については、ARRAY を参照してください。
戻り値
BOOLEAN 型の値を返します。
arr2
がarr1
の部分集合であり、arr2
の要素がarr1
の要素と同じ順序である場合、1
を返します。それ以外の場合は0
を返します。- 空の配列は任意の配列の部分集合です。したがって、
arr2
が空であってもarr1
が有効な配列であれば、1
を返します。 - 入力配列のいずれかが NULL の場合、NULL を返します。
- 配列内の NULL は通常の値として処理されます。例えば、
SELECT array_contains_seq([1, 2, NULL, 3, 4], [2,3])
は 0 を返します。しかし、SELECT array_contains_seq([1, 2, NULL, 3, 4], [2,NULL,3])
は 1 を返します。
例
MySQL > select array_contains_seq([1,2,3,4], [1,2,3]); +---------------------------------------------+ | array_contains_seq([1, 2, 3, 4], [1, 2, 3]) | +---------------------------------------------+ | 1 | +---------------------------------------------+
MySQL > select array_contains_seq([1,2,3,4], [3,2]); +------------------------------------------+ | array_contains_seq([1, 2, 3, 4], [3, 2]) | +------------------------------------------+ | 0 | +------------------------------------------+
MySQL > select array_contains_seq([1, 2, NULL, 3, 4], ['a']); +-----------------------------------------------+ | array_contains_all([1, 2, NULL, 3, 4], ['a']) | +-----------------------------------------------+ | 0 | +-----------------------------------------------+
MySQL > select array_contains_seq([1,2,3,4,null], null); +------------------------------------------+ | array_contains([1, 2, 3, 4, NULL], NULL) | +------------------------------------------+ | NULL | +------------------------------------------+
MySQL > select array_contains_seq([1,2,3,4], []); +--------------------------------------+ | array_contains_seq([1, 2, 3, 4], []) | +--------------------------------------+ | 1 | +--------------------------------------+