OceanBase SQL条件概述
条件用来判断数据的值,并返回 TRUE
、FALSE
或 UNKNOWN
。它由一个或多个表达式和逻辑(布尔)运算符等组件组合而成。只要条件出现在 SQL 语句中,您就必须使用正确的条件语法。
注意
参数NLS_COMP
和NLS_SORT
共同影响字符的排序与比较。若将数据库的NLS_COMP
指定为LINGUISTIC
,那么本开发指南中所有被提到的实体都会遵循参数NLS_SORT
所指定的规则。若NLS_COMP
的值没有被指定为LINGUISTIC
,那么函数将不受NLS_SORT
影响。NLS_SORT
的值可以被直接指定,如果没有被指定,它将继承NLS_LANGUAGE1
的值。
您可以在这些语句的 WHERE
子句中使用条件:
DELETE
SELECT
UPDATE
您也可以在 SELECT
语句的这些子句中使用条件:
WHERE
START WITH
CONNECT BY
HAVING
条件可以称为逻辑数据类型,尽管 OceanBase 数据库不正式支持这样的数据类型。
例如,简单条件 1 = 1 判断结果为 TRUE。
下面更复杂的条件将 salary 的值加上 commission_pct 得值(函数 NVL
将 salary 中的 NULL 值替换为 0 ),并判断总和是否大于 25000。
NVL(salary, 0) + NVL(salary + (salary * commission_pct, 0) > 25000)
逻辑条件 AND
可以将多个条件组合成一个条件。
(1 = 1) AND (5 < 7)
SQL 语句中的有效条件:
name = 'SMITH'
employees.department_id = departments.department_id
hire_date > '01-JAN-08'
job_id IN ('SA_MAN', 'SA_REP')
salary BETWEEN 5000 AND 10000
commission_pct IS NULL AND salary = 2100
条件优先
条件优先级指的是 OceanBase 数据库在同一表达式中判断不同条件的顺序。当计算包含多个条件的表达式时,先判断较高优先级的条件,最后判断较低优先级的条件,而优先级相等的条件则按照从左到右的顺序判断。例如 AND
和 OR
连接的多个条件,不能按照从左到右的顺序判断,而是按照先计算AND
然后计算OR
的顺序。
SQL 条件优先级表
条件类型 |
功能 |
---|---|
=、!=、<、>、<=、>= |
比较。 |
IS [NOT] NULL、LIKE、[NOT] BETWEEN、[NOT] IN、EXISTS、IS OF 类型 |
比较。 |
NOT |
取幂,逻辑取反。 |
AND |
比较。 |
OR |
分离。 |
优先级按照从高到低排列出,同一行上列出的条件具有相同的优先级。