Beam Calcite SQL 純量函數

此頁面說明 Beam Calcite SQL 支援的 Apache Calcite 函數。

比較函數和運算子

運算子語法描述
value1 = value2等於
value1 <> value2不等於
value1 > value2大於
value1 >= value2大於或等於
value1 < value2小於
value1 <= value2小於或等於
value IS NULL值是否為 null
value IS NOT NULL值是否不為 null

邏輯函數和運算子

運算子語法描述
boolean1 OR boolean2boolean1 或 boolean2 是否為 TRUE
boolean1 AND boolean2boolean1 和 boolean2 是否都為 TRUE
NOT booleanboolean 是否不為 TRUE;如果 boolean 為 UNKNOWN,則傳回 UNKNOWN

算術運算式

運算子語法描述
numeric1 + numeric2傳回 numeric1 加 numeric2 的結果
numeric1 - numeric2傳回 numeric1 減 numeric2 的結果
numeric1 * numeric2傳回 numeric1 乘以 numeric2 的結果
numeric1 / numeric2傳回 numeric1 除以 numeric2 的結果
MOD(numeric, numeric)傳回 numeric1 除以 numeric2 的餘數(模數)。只有在 numeric1 為負數時,結果才會為負數

數學函數

運算子語法描述
ABS(numeric)傳回 numeric 的絕對值
SQRT(numeric)傳回 numeric 的平方根
LN(numeric)傳回 numeric 的自然對數 (底數 e)
LOG10(numeric)傳回 numeric 的以 10 為底的對數
EXP(numeric)傳回 e 的 numeric 次方
ACOS(numeric)傳回 numeric 的反餘弦
ASIN(numeric)傳回 numeric 的反正弦
ATAN(numeric)傳回 numeric 的反正切
COT(numeric)傳回 numeric 的餘切
DEGREES(numeric)將 numeric 從弧度轉換為度
RADIANS(numeric)將 numeric 從度轉換為弧度
SIGN(numeric)傳回 numeric 的符號
SIN(numeric)傳回 numeric 的正弦
TAN(numeric)傳回 numeric 的正切
ROUND(numeric1, numeric2)將 numeric1 四捨五入到小數點右邊的 numeric2 位

日期函數

運算子語法描述
LOCALTIME以 TIME 資料類型的值,傳回工作階段時區的目前日期和時間
LOCALTIME(precision)以 TIME 資料類型的值,傳回工作階段時區的目前日期和時間,並具有 precision 位數的精確度
LOCALTIMESTAMP以 TIMESTAMP 資料類型的值,傳回工作階段時區的目前日期和時間
LOCALTIMESTAMP(precision)以 TIMESTAMP 資料類型的值,傳回工作階段時區的目前日期和時間,並具有 precision 位數的精確度
CURRENT_TIME以 TIMESTAMP WITH TIME ZONE 資料類型的值,傳回工作階段時區的目前時間
CURRENT_DATE以 DATE 資料類型的值,傳回工作階段時區的目前日期
CURRENT_TIMESTAMP以 TIMESTAMP WITH TIME ZONE 資料類型的值,傳回工作階段時區的目前日期和時間
EXTRACT(timeUnit FROM datetime)從 datetime 值運算式中擷取並傳回指定之 datetime 欄位的值
FLOOR(datetime TO timeUnit)將 datetime 四捨五入到 timeUnit
CEIL(datetime TO timeUnit)將 datetime 無條件進位到 timeUnit
YEAR(date)等同於 EXTRACT(YEAR FROM date)。傳回整數。
QUARTER(date)等同於 EXTRACT(QUARTER FROM date)。傳回介於 1 和 4 之間的整數。
MONTH(date)等同於 EXTRACT(MONTH FROM date)。傳回介於 1 和 12 之間的整數。
WEEK(date)等同於 EXTRACT(WEEK FROM date)。傳回介於 1 和 53 之間的整數。
DAYOFYEAR(date)等同於 EXTRACT(DOY FROM date)。傳回介於 1 和 366 之間的整數。
DAYOFMONTH(date)等同於 EXTRACT(DAY FROM date)。傳回介於 1 和 31 之間的整數。
DAYOFWEEK(date)等同於 EXTRACT(DOW FROM date)。傳回介於 1 和 7 之間的整數。
HOUR(date)等同於 EXTRACT(HOUR FROM date)。傳回介於 0 和 23 之間的整數。
MINUTE(date)等同於 EXTRACT(MINUTE FROM date)。傳回介於 0 和 59 之間的整數。
SECOND(date)等同於 EXTRACT(SECOND FROM date)。傳回介於 0 和 59 之間的整數。

字串函數

運算子語法描述
string || string串連兩個字元字串
CHAR_LENGTH(string)傳回字元字串中的字元數
CHARACTER_LENGTH(string)與 CHAR_LENGTH(string) 相同
UPPER(string)傳回轉換為大寫的字元字串
LOWER(string)傳回轉換為小寫的字元字串
POSITION(string1 IN string2)傳回 string1 在 string2 中第一次出現的位置
POSITION(string1 IN string2 FROM integer)傳回從給定點開始,string1 在 string2 中第一次出現的位置(非標準 SQL)
TRIM( { BOTH | LEADING | TRAILING } string1 FROM string2)從 string1 的開頭/結尾/兩端移除僅包含 string1 中字元的最長字串
OVERLAY(string1 PLACING string2 FROM integer [ FOR integer2 ])將 string1 的子字串取代為 string2
SUBSTRING(string FROM integer)傳回從給定點開始的字元字串子字串
SUBSTRING(string FROM integer FOR integer)傳回從給定點開始,具有給定長度的字元字串子字串
INITCAP(string)傳回每個字詞的第一個字母轉換為大寫,其餘轉換為小寫的字串。字詞是由非字母數字字元分隔的字母數字字元序列。

條件函數

運算子語法描述
CASE value
WHEN value1 [, value11 ]* THEN result1
[ WHEN valueN [, valueN1 ]* THEN resultN ]*
[ ELSE resultZ ]
END
簡單 case
CASE
WHEN condition1 THEN result1
[ WHEN conditionN THEN resultN ]*
[ ELSE resultZ ]
END
搜尋 case
NULLIF(value, value)如果值相同,則傳回 NULL。例如,NULLIF(5, 5) 傳回 NULL;NULLIF(5, 0) 傳回 5。
COALESCE(value, value [, value ]*)如果第一個值為 null,則提供一個值。例如,COALESCE(NULL, 5) 傳回 5。