WHERE 子句中的表达式

WHERE 子句中的表达式名称或指定要与其他内容进行比较的内容。

您指定的表达式可以是:

  • 列名 用于命名列。 例如:
    ... WHERE EMPNO = '000200'

    EMPNO 将定义为 6 字节字符值的列命名。

  • 表达式 标识添加 (+) ,减 (-) ,乘 (*) ,除 (/) ,具有指数 (**) 或并置 (CONCAT 或 | |) 以生成值的两个值。 表达式的最常见操作数为:
    • 常量
    • 主变量
    • 全局变量
    • 函数
    • 专用寄存器
    • 标量全查询
    • 另一个表达式

    例如:

    ... WHERE INTEGER(PRENDATE - PRSTDATE) > 100

    当未通过括号指定求值顺序时,将按以下顺序对表达式求值:

    1. 前缀运算符
    2. 求幂
    3. 乘法,除法和并置
    4. 加号和减号

    将从左到右应用具有相同优先顺序级别的运算符。

  • 常量 指定表达式的字面值。 例如:
    ... WHERE 40000 < SALARY

    SALARY 指定一个定义为 9 数字压缩十进制值 (DECIMAL (9, 2)) 的列。 它与数字常量 40000 进行比较。

  • 主变量 标识应用程序中的变量。 例如:
    ... WHERE EMPNO = :EMP
  • 专用寄存器 标识由数据库管理器定义的特殊值。 例如:
    ... WHERE LASTNAME = USER
  • NULL 值指定具有未知值的条件。
    ... WHERE DUE_DATE IS NULL

搜索条件可以指定许多用 AND 和 OR 分隔的谓词。 无论搜索条件有多复杂,当针对行进行求值时,它都会提供 TRUE 或 FALSE 值。 还有一个 未知 真值,实际上为 false。 即,如果行的值为空,那么不会返回此空值作为搜索的结果,因为它不小于,等于或大于搜索条件中指定的值。

要完全了解 WHERE 子句,您需要知道 SQL 对搜索条件和谓词求值的顺序,并比较表达式的值。 本主题在 Db2 for i SQL 参考 主题集合中讨论。