WHERE 子句中的表达式
WHERE 子句中的表达式名称或指定要与其他内容进行比较的内容。
您指定的表达式可以是:
- 列名 用于命名列。 例如:
... WHERE EMPNO = '000200'EMPNO 将定义为 6 字节字符值的列命名。
- 表达式 标识添加 (+) ,减 (-) ,乘 (*) ,除 (/) ,具有指数 (**) 或并置 (CONCAT 或 | |) 以生成值的两个值。 表达式的最常见操作数为:
- 常量
- 列
- 主变量
- 全局变量
- 函数
- 专用寄存器
- 标量全查询
- 另一个表达式
例如:
... WHERE INTEGER(PRENDATE - PRSTDATE) > 100当未通过括号指定求值顺序时,将按以下顺序对表达式求值:
- 前缀运算符
- 求幂
- 乘法,除法和并置
- 加号和减号
将从左到右应用具有相同优先顺序级别的运算符。
- 常量 指定表达式的字面值。 例如:
... WHERE 40000 < SALARYSALARY 指定一个定义为 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 参考 主题集合中讨论。