简单表达式

逻辑表达式

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

比较表达式

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

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

  • 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。

      将空值视为相同。

伪列

ROWNUM

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

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

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

示例

  1. postgres=# SELECT 2 BETWEEN 1 AND 3 AS RESULT;
  2. result
  3. ----------
  4. t
  5. (1 row)
  6. postgres=# SELECT 2 >= 1 AND 2 <= 3 AS RESULT;
  7. result
  8. ----------
  9. t
  10. (1 row)
  11. postgres=# SELECT 2 NOT BETWEEN 1 AND 3 AS RESULT;
  12. result
  13. ----------
  14. f
  15. (1 row)
  16. postgres=# SELECT 2 < 1 OR 2 > 3 AS RESULT;
  17. result
  18. ----------
  19. f
  20. (1 row)
  21. postgres=# SELECT 2+2 IS NULL AS RESULT;
  22. result
  23. ----------
  24. f
  25. (1 row)
  26. postgres=# SELECT 2+2 IS NOT NULL AS RESULT;
  27. result
  28. ----------
  29. t
  30. (1 row)
  31. postgres=# SELECT 2+2 ISNULL AS RESULT;
  32. result
  33. ----------
  34. f
  35. (1 row)
  36. postgres=# SELECT 2+2 NOTNULL AS RESULT;
  37. result
  38. ----------
  39. t
  40. (1 row)
  41. postgres=# SELECT 2+2 IS DISTINCT FROM NULL AS RESULT;
  42. result
  43. ----------
  44. t
  45. (1 row)
  46. postgres=# SELECT 2+2 IS NOT DISTINCT FROM NULL AS RESULT;
  47. result
  48. ----------
  49. f
  50. (1 row)