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 boolean2 | boolean1 或 boolean2 是否為 TRUE |
boolean1 AND boolean2 | boolean1 和 boolean2 是否都為 TRUE |
NOT boolean | boolean 是否不為 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。 |