OceanBase 比較條件

2021-06-25 17:30 更新

比較條件(Comparison Conditions)用于比較一個表達式與另一個表達式,比較的結(jié)果為 TRUE、FALSE 或 UNKNOWN

比較條件不能比較大對象(LOB)數(shù)據(jù)類型。但是您可以通過 PL 程序?qū)?nbsp;CLOB 數(shù)據(jù)進行比較。

比較數(shù)值表達式時,OceanBase 使用數(shù)值優(yōu)先級來確定條件中的數(shù)值比較順序,比如比較符兩邊出現(xiàn)不同類型的 數(shù)值時,如果有BINARY_DOUBLE則按照BINARY_DOUBLE進行比較, 其次是BINARY_FLOAT, 最后是NUMBER。是比較 NUMBER、BINARY_FLOAT 還是 BINARY_DOUBLE 值。

比較字符表達式時,OceanBase 使用字符數(shù)據(jù)類型比較規(guī)則中的規(guī)定。它規(guī)定了表達式的字符集在比較之前是如何統(tǒng)一的,選擇使用二進制和語言比較,還是選擇使用空白填充和非空白填充的比較語義。

當使用比較條件對字符值進行語言比較時,首先將它們轉(zhuǎn)換為排序鍵,然后做比較,比較的過程類似 RAW 數(shù)據(jù)類型。排序鍵是由函數(shù) NLSSORT 返回的值。如果兩個表達式生成的排序鍵的前綴相同,即使它們在值的其余部分不同,它們也可以在語言上相等。

如果兩個非標量類型的對象具有相同的命名類型,并且它們的元素之間存在一一對應的關(guān)系,則它們是可比較的。用戶定義的對象類型—嵌套表,在相等或 IN 條件下使用時,必須定義 MAP 方法。嵌套表的元素可以比較。

簡單比較條件

一個簡單比較條件可以是單個表達式與表達式列表比較或單個表達式與子查詢結(jié)果比較。

簡單比較條件語法如下:

expr   {= | != | ^= | <> | < | >= |}   ( expression_list | subquery )

在簡單比較條件中,如果是單個表達式與表達式列表比較,并且表達式列表中的表達式必須在數(shù)量和數(shù)據(jù)類型上與運算符左邊的表達式匹配。如果是單個表達式與子查詢的值比較,則子查詢返回的值必須與運算符左側(cè)的表達式在數(shù)量和數(shù)據(jù)類型上匹配。

組比較條件

一個組比較條件可以是單個表達式與表達式列表或子查詢結(jié)果的任何或所有成員比較,也可以是多個表達式與表達式列表或子查詢結(jié)果的任何或所有成員比較。

在組比較條件中,如果是單個表達式或多個表達式列表與表達式列表的任何或所有成員比較,則每個表達式列表中的表達式必須在數(shù)量和數(shù)據(jù)類型上與運算符左邊的表達式匹配。如果是單個表達式或多個表達式與子查詢結(jié)果的任何或所有成員比較,則子查詢返回的值必須與運算符左側(cè)的表達式在數(shù)量和數(shù)據(jù)類型上匹配。

組比較條件語法有如下兩種:

expr  {= | != | ^= | <> | < | >= | ANY | SOME | ALL } ({ expression_list | subquery})
(expr [, expr ]...){= | != | ^= | ANY | SOME | ALL} ({expression_list  [, expression_list ]... |subquery})
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號