OceanBase 比較條件

2021-06-25 17:30 更新

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

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

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

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

當(dāng)使用比較條件對(duì)字符值進(jìn)行語(yǔ)言比較時(shí),首先將它們轉(zhuǎn)換為排序鍵,然后做比較,比較的過(guò)程類似 RAW 數(shù)據(jù)類型。排序鍵是由函數(shù) NLSSORT 返回的值。如果兩個(gè)表達(dá)式生成的排序鍵的前綴相同,即使它們?cè)谥档钠溆嗖糠植煌?,它們也可以在語(yǔ)言上相等。

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

簡(jiǎn)單比較條件

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

簡(jiǎn)單比較條件語(yǔ)法如下:

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

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

組比較條件

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

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

組比較條件語(yǔ)法有如下兩種:

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)