比较函数和比较操作符
比较操作符用于对两个数据的大小进行比较,并返回一个布尔类型的值。
比较操作符均为二元运算符,具体请参见表1。M-Compatibility模式下提供的比较操作符请参见表1。
- 不等于的计算优先级高于等于。
- M-Compatibility模式下目前只支持btree索引和ubtree索引。
- <>和<=>不支持索引扫描。
- <=>不支持hash连接和合并连接。
- <=>不支持行比较。
- <、<=、=、>=、>、<>操作符支持行表达式与NULL值比较。
- IS NULL、ISNULL操作支持行表达式作为参数使用。
m_db=# SELECT (1,2) <=> row(2,3);
ERROR: could not determine interpretation of row comparison operator <=>
LINE 1: select (1,2) <=> row(2,3);
^
HINT: unsupported operator.
m_db=# SELECT (1,2) < NULL;
?column?
----------
(1 row)
m_db=# SELECT (1,2) <> NULL;
?column?
----------
(1 row)
m_db=# SELECT (1, 2) IS NULL;
?column?
----------
f
(1 row)
m_db=# SELECT ISNULL((1, 2));
?column?
----------
f
(1 row)
- >操作符
示例:
1 2 3 4 5
m_db=# SELECT 2 > 2; ?column? ---------- f (1 row)
- <=操作符
示例:
1 2 3 4 5
m_db=# SELECT 0.1 <= 0.2; ?column? ---------- t (1 row)
- >=操作符
示例:
1 2 3 4 5
m_db=# SELECT 2 >= 2; ?column? ---------- t (1 row)
- =操作符
示例:
1 2 3 4 5
m_db=# SELECT 2 = 2; ?column? ---------- t (1 row)
- <>或!=操作符
示例:
1 2 3 4 5
m_db=# SELECT 1 <> 2; ?column? ---------- t (1 row)
- <=>操作符
描述:NULL安全等于操作符,此操作符执行与=操作符类似的相等比较,但NULL与NULL进行NULL安全等于比较时返回t,否则返回f。
示例:
1 2 3 4 5
m_db=# SELECT 1 <=> 1, 1 <=> NULL, NULL <=> NULL; ?column? | ?column? | ?column? ----------+----------+---------- t | f | t (1 row)
- IS操作符
expr IS boolean_value
描述:判断expr是否等价于boolean_value,如果等价则返回真(t),否则返回假(f)。其中boolean_value可以是TRUE、FALSE、NULL或UNKNOWN。
示例:
m_db=# SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN; is true | is false | ?column? ---------+----------+---------- t | t | t (1 row)
- IS NOT操作符
expr IS NOT boolean_value
描述:判断expr是否不等价于boolean_value,如果不等价则返回真(t),否则返回假(f)。其中boolean_value可以是TRUE、FALSE、NULL或UNKNOWN。
示例:
m_db=# SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN; ?column? | ?column? | ?column? ----------+----------+---------- t | t | f (1 row)
- IS NOT NULL操作符
expr IS NOT NULL
描述:判断expr是否为非NULL。如果是则返回真(t),否则返回假(f)。
示例:
m_db=# SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL; ?column? | ?column? | ?column? ----------+----------+---------- t | t | f (1 row)
- IS NULL操作符
expr IS NULL
描述:判断expr是否为NULL。如果是则返回真(t),否则返回假(f)。
示例:
m_db=# SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL; ?column? | ?column? | ?column? ----------+----------+---------- f | f | t (1 row)
比较函数
- GREATEST(value1, value2, ...)
参数:至少需要两个参数。
示例:
m_db=# SELECT GREATEST(34.0, 3.0, 5.0, 767.0); greatest ---------- 767.0 (1 row) m_db=# SELECT GREATEST('B', 'A', 'C'); greatest ---------- C (1 row) - INTERVAL(N, N1, N2, N3, ...)
描述:返回N与其他参数组成的列表(N1, N2, N3, ...)的比较情况。
参数:至少需要两个参数,所有传入的参数被视为数字类型。
返回值类型:SMALLINT
- 如果N为NULL,则返回-1。
- 如果N<N1,则返回0。
- 如果存在正整数j,对于任意正整数i≤j,都有Ni≤N≤Nj+1,则返回j。
示例:
m_db=# SELECT INTERVAL(24, 2, 5, 14, 26, 28, 46); interval ---------- 3 (1 row) m_db=# SELECT INTERVAL(24, 29, 5, 14); interval ---------- 0 (1 row) - ISNULL(expr)
描述:如果参数expr为NULL,那么该函数返回t,否则返回f。
参数:任意入参。
返回值类型:BOOLEAN
示例:
m_db=# SELECT ISNULL('2023-01-01'); isnull -------- f (1 row) m_db=# SELECT ISNULL(NULL); isnull -------- t (1 row) - LEAST(value1, value2, ...)
参数:至少需要两个参数。
示例:
m_db=# SELECT LEAST(34.0, 3.0, 5.0, 767.0); least ------- 3.0 (1 row) m_db=# SELECT LEAST('B', 'A', 'C'); least ------- A (1 row)