|運算符|示例|註釋|
|----|----|----|
|加(a,b)|a + b|計算數字的總和。您還可以添加帶有日期或日期和時間的整數。在日期的情況下,添加整數意味著添加相應的天數。對於具有時間的日期,這意味著添加相應的秒數。|
|減(a,b)|a - b|您還可以根據時間計算日期或日期的整數|
|乘以(a,b)|a * b|計算數字的乘積|
|除(a,b)|a / b|計算數字的商。結果類型始終是浮點類型。它不是整數除法。對於整數除法,請使用'intDiv'函數。當除以零時,妳得到'inf',' - inf'或'nan'。|
|整數除|intDiv(a,b)|計算數字的商。分為整數,向下舍入(按絕對值)。除以零或將最小負數除以-1時拋出異常。|
|異常除|intDivOrZero(a,b)|與'intDiv'的不同之處在於它在除以零或將最小負數除以-1時返回零。|
|取余數|a % b|計算除法後的余數。如果參數是浮點數,則通過刪除小數部分將它們預轉換為整數。截斷除法用於負數。除以零或將最小負數除以-1時拋出異常。|
|取反a| -a | 用反轉符號計算壹個數字。|
|取絕對值|abs(a)|計算數字(a)的絕對值。也就是說,如果a <0,則返回-a。對於無符號類型,它不執行任何操作。對於有符號整數類型,它返回無符號數。|
|取最大公約數|gcd(a,b)|返回數字的最大公約數。除以零或將最小負數除以-1時拋出異常|
|取最小公倍數|lcm(a,b)|返回數字的最小公倍數。除以零或將最小負數除以-1時拋出異常。|
比較
|運算符|示例|註釋|
|----|----|----|
|相等|a == b||
|不等|a!=b,a<>b||
|小於|a<b||
|大於|a>b||
|小於等於|a<=b ||
|大於等於|a>=b ||
邏輯運算符
接受任何數字類型,但返回等於0或1的UInt8數。
零作為參數被認為是“假”,而任何非零值被認為是“真”。
|運算符|示例|
|----|----|
|並|AND|
|或|OR|
|否|NOT|
類型轉換
轉換為數值類型:
toUInt8,toUInt16,toUInt32,toUInt64
toInt8,toInt16,toInt32,toInt64
toFloat32,toFloat64
TODATE,toDateTime
toUInt8OrZero,toUInt16OrZero,toUInt32OrZero,toUInt64OrZero,toInt8OrZero,toInt16OrZero,toInt32OrZero,toInt64OrZero,toFloat32OrZero,toFloat64OrZero,toDateOrZero,toDateTimeOrZero
toUInt8OrNull,toUInt16OrNull,toUInt32OrNull,toUInt64OrNull,toInt8OrNull,toInt16OrNull,toInt32OrNull,toInt64OrNull,toFloat32OrNull,toFloat64OrNull,toDateOrNull,toDateTimeOrNull
toDecimal32(value,S),toDecimal64(value,S),toDecimal128(value,S)
該value可以是壹個數字或壹個字符串。S參數指定小數位的數量。
轉換為字符串類型:
toString
用於在數字、字符串(但不是固定字符串)、日期和日期與時間之間進行轉換的函數。所有這些函數都接受壹個參數。
在轉換為字符串或從字符串轉換時,將使用與選項卡分隔格式(以及幾乎所有其他文本格式)相同的規則對值進行格式化或解析。如果無法解析字符串,則拋出異常並取消請求。
當將日期轉換為數字或反之亦然時,日期對應自Unix紀元開始以來的天數。當將日期與時間轉換為數字或反之亦然時,日期與時間對應自Unix紀元開始以來的秒數。
toDate/toDateTime
如果從UInt32、Int32、UInt64或Int64數字類型轉換到日期,並且該數字大於或等於65536,則該數字將被解釋為Unix時間戳(而不是天數),並四舍五入到日期。這允許支持寫入“toDate(unix_timestamp)”的常見情況,否則這將是壹個錯誤,需要編寫更麻煩的“toDate(toDateTime(unix_timestamp))”。
日期和帶時間的日期之間的轉換以壹種自然的方式執行:添加壹個空時間或刪除時間。
DateTime參數的toString函數可以接受包含時區名稱的第二個字符串參數。例如:Asia/Yekaterinburg在本例中,時間是按照指定的時區格式化的。
toString(now(), 'Asia/Yekaterinburg')
toFixedString(s, N)
將字符串類型參數轉換為FixedString(N)類型(長度為N的字符串)。N必須是常量。如果字符串的字節數小於N,則向右傳遞null字節。如果字符串的字節數超過N,則拋出異常。
toStringCutToZero(s)
接受字符串或FixedString參數。返回在找到的第壹個零字節處截斷內容的字符串。
reinterpretAsUInt8, reinterpretAsUInt16, reinterpretAsUInt32, reinterpretAsUInt64
reinterpretAsInt8, reinterpretAsInt16, reinterpretAsInt32, reinterpretAsInt64
reinterpretAsFloat32, reinterpretAsFloat64
reinterpretAsDate, reinterpretAsDateTime
這些函數接受字符串並將字符串開頭的字節解釋為按主機順序排列的數字(小端)。如果字符串不夠長,函數的工作方式就像用必要的空字節數填充字符串壹樣。如果字符串比需要的長,則忽略額外的字節。日期被解釋為自Unix紀元開始以來的天數,帶有時間的日期被解釋為自Unix紀元開始以來的秒數。
reinterpretAsString
該函數接受壹個數字、日期或帶時間的日期,並返回壹個字符串,其中包含以主機順序(小端)表示相應值的字節。空字節從末尾刪除。
reinterpretAsFixedString
該函數接受壹個數字、日期或帶時間的日期,並返回壹個FixedString,其中包含以主機順序(小端)表示相應值的字節。空字節從末尾刪除。
CAST(x, t)
將“x”轉換為“t”數據類型
轉換為FixedString(N)只適用於String或FixedString(N)類型的參數。
toIntervalYear, toIntervalQuarter, toIntervalMonth, toIntervalWeek, toIntervalDay, toIntervalHour, toIntervalMinute, toIntervalSecond
將數字類型參數轉換為區間類型(持續時間)。interval類型實際上非常有用,您可以使用這種類型的數據直接對Date或DateTime執行算術操作。同時,ClickHouse為聲明間隔類型數據提供了更方便的語法。例如:
```
WITH
toDate('2019-01-01') AS date,
INTERVAL 1 WEEK AS interval_week,
toIntervalWeek(1) AS interval_to_week
SELECT
date + interval_week,
date + interval_to_week
```
parseDateTimeBestEffort
將數字類型參數解析為日期或DateTime類型。與toDate和toDateTime不同,parseDateTimeBestEffort可以改進更復雜的日期格式
parseDateTimeBestEffortOrNull
與parseDateTimeBestEffort相同,只是當遇到無法處理的日期格式時返回null。
parseDateTimeBestEffortOrZero
與parseDateTimeBestEffort相同,只是當遇到無法處理的日期格式時,它返回零日期或零日期時間。