ARRAY_COMPARE関数は、2つの配列引数の対の比較を行ない、2つの配列式がすべて同じ構成要素の値を含むかどうかを示すスカラー値を返します。
ARRAY_COMPAREは、次のようなANSI配列比較のルールに従います。
- expr1またはexpr2のどちらかがNULLと評価される場合、結果はNULLになります。
- expr1のすべての構成要素の値がexpr2の構成要素の値と等しい場合にのみ、expr1およびexpr2は等しくなります。
- expr1とexpr2両方が同じ値を持ち、配列内の同じ位置にある場合に限り、expr1の構成要素の値はexpr2の構成要素の値と等しくなります。
- 非NULL構成要素が配列Aおよび配列Bの指定された構成要素と一致しない場合、これは一致しないとみなされ、ARRAY_COMPAREは値0を返します。
- 指定した構成要素のどちらかまたは両方の値がNULL、かつ、配列内のそれ以外のすべての構成要素が一致する場合、これはANSI規格に従って一致しないとみなされます。ANSI規格に従えば、このケースの結果はUNKNOWNです。Teradataでは、これをNULL結果と評価します。
上記のルール(1)または(5)を満たす場合、ARRAY_COMPAREはNULLを返します。ルール(2)および(3)を満たす場合、ARRAY_COMPAREは1を返します。それ以外の場合、ARRAY_COMPAREは0を返します。
オプションのnulls_equal_flagを1に設定し、指定した構成要素の両方の値がNULLの場合、これは一致するとみなされ、ANSI規格とはずれがあります。それ以外のすべての構成要素が一致する場合、上記のルール(2)が適用されます。
任意の引数scope_referenceを指定する場合は、関数は指定された適用範囲内にある構成要素のみに適用されます。
ARRAY引数に初期化されていない状態にある構成要素が含まれている場合、エラーが返されます。適用範囲の参照を使用して、初期化されてない構成要素が含まれているARRAYの範囲の参照を回避するか、初期化されていない構成要素をNULLに設定します。これは、OEXTENDメソッドを使用して行なえます。OEXTENDを参照してください。