OceanBase SQL條件概述

2021-06-25 17:23 更新

條件用來判斷數(shù)據(jù)的值,并返回 TRUE、FALSE 或 UNKNOWN。它由一個或多個表達式和邏輯(布爾)運算符等組件組合而成。只要條件出現(xiàn)在 SQL 語句中,您就必須使用正確的條件語法。

注意 
參數(shù) NLS_COMP 和 NLS_SORT 共同影響字符的排序與比較。若將數(shù)據(jù)庫的 NLS_COMP 指定為LINGUISTIC,那么本開發(fā)指南中所有被提到的實體都會遵循參數(shù) NLS_SORT 所指定的規(guī)則。若 NLS_COMP 的值沒有被指定為 LINGUISTIC,那么函數(shù)將不受 NLS_SORT 影響。NLS_SORT 的值可以被直接指定,如果沒有被指定,它將繼承 NLS_LANGUAGE1 的值。

您可以在這些語句的 WHERE 子句中使用條件:

  • DELETE
  • SELECT
  • UPDATE

您也可以在 SELECT 語句的這些子句中使用條件:

  • WHERE
  • START WITH
  • CONNECT BY
  • HAVING

條件可以稱為邏輯數(shù)據(jù)類型,盡管 OceanBase 數(shù)據(jù)庫不正式支持這樣的數(shù)據(jù)類型。

例如,簡單條件 1 = 1 判斷結(jié)果為 TRUE。

下面更復雜的條件將 salary 的值加上 commission_pct 得值(函數(shù) 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

條件優(yōu)先

條件優(yōu)先級指的是 OceanBase 數(shù)據(jù)庫在同一表達式中判斷不同條件的順序。當計算包含多個條件的表達式時,先判斷較高優(yōu)先級的條件,最后判斷較低優(yōu)先級的條件,而優(yōu)先級相等的條件則按照從左到右的順序判斷。例如 AND 和 OR 連接的多個條件,不能按照從左到右的順序判斷,而是按照先計算AND然后計算OR的順序。

SQL 條件優(yōu)先級表

條件類型

功能

=、!=、<、>、<=、>=

比較。

IS [NOT] NULL、LIKE、[NOT] BETWEEN、[NOT] IN、EXISTS、IS OF 類型

比較。

NOT

取冪,邏輯取反。

AND

比較。

OR

分離。

優(yōu)先級按照從高到低排列出,同一行上列出的條件具有相同的優(yōu)先級。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號