配列要素は最初の要素から比較されます。相違が見つかった場合、比較処理は停止し、その直前に比較した要素間の比較結果が返されます。すべての要素の比較が等しい場合、両配列は等しいものとなります。実行される比較は、配列に保持されていない式に対して実行される比較と同じです。ある配列が別の配列より短く、短い配列のすべての要素が長い配列の同じ要素と等しい場合、短い配列は長い配列より小さいと見なされます。
配列を比較する場合、それぞれの配列は和両立のデータ型を使用した値を保持している必要があります。重複排除と GROUP BY も、配列の式でサポートされています。たとえば、次の配列の比較では、クエリは 1 を返します。
SELECT IF ARRAY(3,4,5) > ARRAY(2,3,4) THEN 1 ELSE 0 ENDIF; |
Row 型を比較して、ジョイン、重複排除、グループ化で使用することができます。ここで比較する 2 つのローの型は、上の例のローの式と同じだとします。
DECLARE test1 ROW(x INT, w ROW(y INT, z INT)); DECLARE test2 ROW(a INT, b ROW(c INT, d CHAR(3))); SET test1 = ROW(3, ROW(6,7)); SET test2 = ROW(3, ROW(8,'7')); SELECT (IF (test1 > test2) THEN 1 ELSE 0 ENDIF) AS RESULT FROM dummy; |
2 つのローの式は、それぞれの構造が一致する場合にのみ比較できます。ただし、ローの式は同じ構造である必要がありますが、ローの型の属性名は同じである必要はなく、個々のリーフ値のデータ型も同じである必要はありません。和両立であることのみ必要です。
等号演算と不等号演算以外では、すべての ROW の比較は UNKNOWN となります。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |