Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - SQL 参考 » SQL 数据类型 » 数据类型比较

 

复合类型的比较

数组元素将从第一个元素开始进行比较。如果发现差异,则比较将会停止,并且返回最近比较过的元素之间的比较结果。如果所有元素的比较结果相同,则数组全部相同。所进行的比较等同于那些对数组中不包含的表达式进行的比较。如果一个数组短于另一个数组,并且较短数组的所有元素都等于较长数组的相同元素,则将较短数组视为小于较长数组。

在比较数组时,数组必须保存具有联集兼容数据类型的值。此外,数组表达式也支持重复排除和 GROUP BY。例如,通过以下数组比较,查询将返回 1:

SELECT IF ARRAY(3,4,5) > ARRAY(2,3,4) THEN 1 ELSE 0 ENDIF;

行类型可进行比较,并可用于连接、重复排除和分组。请考虑与上述行表达式示例相似的两个行类型:

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;

两个行表达式仅在其结构相同时才能进行比较。但是,行表达式必须具有相同的结构时,行类型属性的名称不需要完全相同,并且各个叶值的数据类型也不必相同—仅联集兼容。

除了等式运算和不等式运算以外的所有 ROW 比较均会得到 UNKNOWN。