yuan-er

导航

 

行表达式

语法:

row_constructor operator row_constructor

两边都是一个行构造器,两行值必须具有相同数目的字段,每一行都进行比较,行比较允许使用=,<>,<,<=,>=等操作符,或其中一个相似的语义符。

对于<,<=,>,> =的情况下,行中元素从左到右依次比较,直到遇到一对不相等的元素或者一对为空的元素。如果这对元素中存在至少一个null值,则比较结果是未知的(null),否则这对元素的比较结果为最终的结果。如果最终没有遇到不相等或者为空的元素,则认为这两行值相等,根据操作符含义判断最终结果。

不支持对XML类型数据操作。

示例:

gaussdb=# SELECT ROW(1,2,NULL) < ROW(1,3,0) AS RESULT;
  result
----------
 t
(1 row)

gaussdb=# SELECT (4,5,6) > (3,2,1) AS result;
 result 
--------
 t
(1 row)

gaussdb=# SELECT (4,1,1) > (3,2,1) AS result;
 result 
--------
 t
(1 row)

gaussdb=# SELECT ('test','data') > ('data','data') AS result;
 result 
--------
 t
(1 row)

gaussdb=# SELECT (4,1,1) > (3,2,null) AS result;
 result 
--------
 t
(1 row)

gaussdb=# SELECT (null,1,1) > (3,2,1) AS result;
 result 
--------

(1 row)

gaussdb=# SELECT (null,5,6) > (null,5,6) AS result;
 result 
--------

(1 row)

gaussdb=# SELECT (4,5,6) > (4,5,6) AS result;
 result 
--------
 f
(1 row)

gaussdb=# SELECT (2,2,5) >= (2,2,3) AS result;
 result 
--------
 t
(1 row)

gaussdb=# SELECT (2,2,1) <= (2,2,3) AS result;
 result 
--------
 t
(1 row)
 
 

=,<>和别的操作符使用略有不同。如果两行值的所有字段都是非空并且符合操作符条件,则认为两行是符合操作符条件的;如果两行值的任意字段为非空并且不符合操作符条件,则认为两行是不符合操作符条件的;如果两行值的任意字段为空,则比较的结果是未知的(null)。

示例:

gaussdb=# SELECT (1,2,3) = (1,2,3) AS result;
 result 
--------
 t
(1 row)

gaussdb=# SELECT (1,2,3) <> (2,2,3) AS result;
 result 
--------
 t
(1 row)

gaussdb=#  SELECT (2,2,3) <> (2,2,null) AS result;
 result 
--------

(1 row)

gaussdb=#  SELECT (null,5,6) <> (null,5,6) AS result;
 result 
--------

(1 row)
 
 
 
posted on 2024-12-23 10:56  数据库笔记  阅读(5)  评论(0)    收藏  举报