简单表达式

逻辑表达式

逻辑表达式的操作符和运算规则,请参见逻辑操作符。

比较表达式

常用的比较操作符,请参见操作符。

除比较操作符外,还可以使用以下句式结构:

  • BETWEEN操作符

a BETWEEN x AND y等效于a >= x AND a <= y

a NOT BETWEEN x AND y等效于a < x OR a > y - 检查一个值是不是null,可使用:

expression IS NULL

expression IS NOT NULL

或者与之等价的句式结构,但不是标准的:

expression ISNULL

expression NOTNULL

简单表达式 - 图1 须知:

不要写expression=NULL或expression<>(!=)NULL,因为NULL代表一个未知的值,不能通过该表达式判断两个未知值是否相等。 - is distinct from/is not distinct from

  • is distinct from

    A和B的数据类型、值不完全相同时为true。

    A和B的数据类型、值完全相同时为false。

    将空值视为相同。 - is not distinct from

    A和B的数据类型、值不完全相同时为false。

    A和B的数据类型、值完全相同时为true。

    将空值视为相同。 - <=> 安全等于操作符

在 ‘=’ 比较的基础上增加NULL值的比较,在操作符左右值都不为NULL时与 ‘=’ 结果相同。

A和B的数据类型、值不完全相同时为false。

A和B的数据类型、值完全相同时为true。

将空值视为相同。

简单表达式 - 图2 说明:

  • <=>操作符与 is not distinct from 用法完全相同。
  • 该操作符仅在GaussDB Kernel openGauss兼容MY类型时(即sql_compatibility = ‘B’)有效,其他类型不支持该操作符。

伪列

ROWNUM

ROWNUM是一个伪列,它返回一个数字,表示从查询中获取结果的行编号。第一行的ROWNUM为1,第二行的为2,依此类推。

ROWNUM的返回类型为numeric。ROWNUM可以用于限制查询返回的总行数,例如下面语句限制查询从Students表中返回最多10条记录。

1. select * from Students where rownum <= 10;

示例

1. openGauss=# SELECT 2 BETWEEN 1 AND 3 AS RESULT;
2. result
3. ----------
4. t
5. (1 row)

7. openGauss=# SELECT 2 >= 1 AND 2 <= 3 AS RESULT;
8. result
9. ----------
10. t
11. (1 row)

13. openGauss=# SELECT 2 NOT BETWEEN 1 AND 3 AS RESULT;
14. result
15. ----------
16. f
17. (1 row)

19. openGauss=# SELECT 2 < 1 OR 2 > 3 AS RESULT;
20. result
21. ----------
22. f
23. (1 row)

25. openGauss=# SELECT 2+2 IS NULL AS RESULT;
26. result
27. ----------
28. f
29. (1 row)

31. openGauss=# SELECT 2+2 IS NOT NULL AS RESULT;
32. result
33. ----------
34. t
35. (1 row)

37. openGauss=# SELECT 2+2 ISNULL AS RESULT;
38. result
39. ----------
40. f
41. (1 row)

43. openGauss=# SELECT 2+2 NOTNULL AS RESULT;
44. result
45. ----------
46. t
47. (1 row)

49. openGauss=# SELECT 2+2 IS DISTINCT FROM NULL AS RESULT;
50. result
51. ----------
52. t
53. (1 row)

55. openGauss=# SELECT 2+2 IS NOT DISTINCT FROM NULL AS RESULT;
56. result
57. ----------
58. f
59. (1 row)