华为云云数据库GaussDB行表达式_云淘科技

语法:

row_constructor operator row_constructor

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

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

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

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
gaussdb=# SELECT ROW(1,2,NULL)  (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)。

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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)

父主题: 表达式

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家