ARRAY_UPDATE_STRIDEは、引数として配列式を取り、new_valueで指定した値でarray_expr内の構成要素のすべてまたはサブセットを更新します。stride引数は、構成要素を更新するにあたり、構成要素をいくつスキップするかを示します。
ARRAY_UPDATE_STRIDE関数には、次に示すルールが適用されます。
- array_exprがNULLの場合、結果はNULLになります。
- new_valueの値は、array_exprの要素型と同じデータ型と評価される必要があります。あるいは、暗黙的に要素型ARRAYに変換できるデータ型であることが必要です。
- scope_referenceまたはarray_indexを指定しない場合、array_expr内のすべての構成要素がnew_valueの値に更新されます。
- scope_referenceを指定すると、array_exprの適用範囲の参照内の構成要素のみがnew_valueの値に更新されます。scope_referenceは配列内の連続する構成要素を参照する必要があります。
- array_indexを指定する場合、array_indexで指定した単一の構成要素のみが、array_expr内のnew_valueの値に更新されます。この場合、stride_valueは影響しません。
- stride_value引数は、更新対象の構成要素の間でスキップする構成要素の数を指定します。例えば、stride_valueが1の場合、影響を受ける構成要素の範囲内で1つおきに更新されます。影響を受ける構成要素の範囲は、scope_referenceが指定されているかどうかによって異なります。多次元配列の場合、構成要素は行優先順で格納されるので、この順序で進みながらstride_valueに従ってスキップされます。
- 更新する構成要素がNULLの場合、NULLはarray_expr内のnew_valueの値で置換されます。
- 1つ以上の構成要素が変更され、更新する構成要素より前にARRAY値内に初期化されていない構成要素がある場合、ARRAY_UPDATE_STRIDEはそれ以前の初期化されていない構成要素にNULLに設定します。この動作は、ARRAY構成要素値を設定する通常のSQL UPDATE文の動作と同じです。
- それまでに初期化されていなかった構成要素をスキップすると、NULLに更新されます。