ClickHouse 函數

文章目錄

  • 一、日期函數
    • 1、時間或日期截取函數(返回非日期)
    • 2、時間或日期截取函數(返回日期)
    • 3、日期或時間日期生成函數
  • 二、類型轉化類函數
    • 1、精度保留(非四舍五入)
    • 2、字符串轉化為整數(非整數的字符串返回0)
    • 3、日期與時間日期轉化
    • 4、轉化為字符型
    • 5、查看數據類型
  • 三、字符串操作
    • 1、基本字符串操作
    • 2、字符串查找
    • 3、字符串替換
    • 4、字符串分割
    • 5、字符串拼接
  • 四、條件語句
  • 五、數學函數
  • 六、算術函數
  • 七、舍入函數
  • 八、URL操作函數
  • 九、IP操作函數
  • 十、表操作
    • 1、表連接操作
    • 2、limit操作
  • 十一、字典操作
  • 十二、聚合函數組合器
    • 1、-If
    • 2、-Merge

一、日期函數

1、時間或日期截取函數(返回非日期)

函數說明舉例結果
toYear()取日期或時間日期的年份toYear(toDateTime(‘2022-04-30 11:12:13’))
toYear(toDate(‘2022-04-30’))
2022
2022
toMonth()取日期或時間日期的月份toMonth(toDateTime(‘2022-04-30 11:12:13’))
toMonth(toDate(‘2022-04-30’))
4
4
toDayOfMonth()取日期或時間日期的天(1-31)toDayOfMonth(toDayOfMonth(‘2022-04-30 11:12:13’))
toDayOfMonth(toDayOfMonth(‘2022-04-30’))
30
30
toDayOfWeek()取日期或時間日期的星期(星期一為1,星期日為7)toDayOfWeek(toDateTime(‘2022-04-30 11:12:13’))
toDayOfWeek(toDate(‘2022-04-30’))
6
6
toHour()取時間日期的小時toHour(toDateTime(‘2022-04-30 11:12:13’))11
toMinute()取時間日期的分鐘toMinute(toDateTime(‘2022-04-30 11:12:13’))12
toSecond()取時間日期的秒toSecond(toDateTime(‘2022-04-30 11:12:13’))13
toMonday()取時間日期最近的周一(返回日期)toMonday(toDate(‘2022-04-30’))
toMonday(toDateTime(‘2022-04-30 11:12:13’))
2022-04-25
2022-04-25
toTime()將時間日期的日期固定到某一天,保留原始時間toTime(toDateTime(‘2022-04-30 11:12:13’))1970-01-02 11:12:13

2、時間或日期截取函數(返回日期)

函數說明舉例結果
toStartOfMonth()取日期或時間日期的月份的第一天,返回日期toStartOfMonth(toDateTime(‘2022-04-30 11:12:13’))
toStartOfMonth(toDate(‘2022-04-30’))
2022-04-01
2022-04-01
toStartOfQuarter()取日期或時間日期的季度的第一天,返回日期toStartOfQuarter(toDateTime(‘2022-04-30 11:12:13’))
toStartOfQuarter(toDate(‘2022-04-30’))
2022-04-01
2022-04-01
toStartOfYear()取日期或時間日期的年份的第一天,返回日期toStartOfYear(toDateTime(‘2022-04-30 11:12:13’))
toStartOfYear(toDate(‘2022-04-30’))
2022-01-01
2022-01-01
toStartOfMinute()截取時間日期到分鐘(之后歸零),返回日期toStartOfMinute(toDateTime(‘2022-04-30 11:12:13’))2022-04-30 11:12:00
toStartOfFiveMinute()截取時間日期到最近的5的倍數分鐘(之后歸零),返回日期toStartOfFiveMinute(toDateTime(‘2022-04-30 11:12:13’))2022-04-30 11:10:00
toStartOfFifteenMinutes()截取時間日期到最近的15的倍數分鐘(之后歸零),返回日期toStartOfFifteenMinutes(toDateTime(‘2022-04-30 11:12:13’))2022-04-30 11:00:00
toStartOfHour()截取時間日期到小時(之后歸零),返回日期toStartOfHour(toDateTime(‘2022-04-30 11:12:13’))2022-04-30 11:00:00
toStartOfDay()截取時間日期到天(之后歸零),返回日期toStartOfDay(toDateTime(‘2022-04-30 11:12:13’))2022-04-30 00:00:00
timeSlot()將時間日期中,分鐘大于等于30的歸于30,分鐘數小于30的歸為00timeSlot(toDateTime(‘2022-04-30 11:12:13’))
timeSlot(toDateTime(‘2022-04-30 11:32:13’))
2022-04-30 11:00:00
2022-04-30 11:30:00

3、日期或時間日期生成函數

函數說明舉例結果
now()生成當前時間日期now()2022-04-30 11:12:13
today()生成今天的日期today()2022-04-30
yesterday()生成昨天的日期yesterday()2022-04-29

二、類型轉化類函數

1、精度保留(非四舍五入)

函數說明舉例結果
toDecimal32()將數值型或者含有非數字的字符串進行精度保留toDecimal32(23.12291, 3)
toDecimal32(‘_23.12291’, 3)
23.122
0.000
toDecimal64()將數值型或者含有非數字的字符串進行精度保留toDecimal64(23.12291, 3)
toDecimal64(‘_23.12291’, 3)
23.122
0.000
toDecimal128()將數值型或者含有非數字的字符串進行精度保留toDecimal128(23.12291, 3)
toDecimal64(‘_23.12291’, 3)
23.122
0.000

2、字符串轉化為整數(非整數的字符串返回0)

函數說明舉例結果
toUInt8OrZero()將無符號整數字符型轉化為整數型,否則返回0toUInt8OrZero(‘123’)
toUInt8OrZero(‘123.12’)
123
0
toInt8OrZero()將整數字符型轉化為整數型,否則返回0toInt8OrZero(‘123’)
toInt8OrZero(‘-123’)
123
-123
toFloat32OrZero()將數值字符串型轉化為數值型,注意:從toFloat32OrZero開始,丟32的沒有對應的函數toFloat32OrZero(‘-123’)
toFloat32OrZero(‘123.123’)
-123
123.123

3、日期與時間日期轉化

函數說明舉例結果
toDate()將字符型日期轉化為日期型toDate(‘2022-04-30’)2022-04-30
toDateTime()將字符型時間日期轉化為時間日期型toDateTime(‘2022-04-30 10:10:00’)2022-04-30 10:10:00

4、轉化為字符型

函數說明舉例結果
toString()將數值型、字符型、日期等轉化為字符型toString(‘2022-04-30’)
toString(‘123’)
2022-04-30
123

5、查看數據類型

函數說明舉例結果
toTypeName()返回數據的類型toTypeName(toString(‘123’))
toTypeName(toDate(‘2018-12-24’))
String
Date

三、字符串操作

1、基本字符串操作

函數說明舉例結果
empty()判斷字符串是空為1,否則為0empty(‘’)
empty(‘123a’)
1
0
notEmpty()判斷字符串是非空為1,否則為0notEmpty(‘’)
notEmpty(‘123a’)
0
1
length()返回字符串的長度length(‘’)
length(‘123a’)
0
4
lower()將字符串轉為小寫lower(‘aBc’)abc
upper()將字符串轉為大寫upper(‘aBc’)ABC
reverse()將字符串反轉reverse(‘abc’)cba
substring(s, offset, length)字符串截取substring(‘123abcABC’, 2, 3)23a
appendTrailingCharIfAbsent(s, c)如果字符串s非空,則將s后追加一個字符c(s最后一個字符與c不同),否則不處理appendTrailingCharIfAbsent(‘123abc’, ‘b’)
appendTrailingCharIfAbsent(‘123abc’, ‘c’)
123abcb
123abc

2、字符串查找

函數說明舉例結果
match(haystack,pattern)字符串正則匹配,返回0或1match(‘avhsca’,‘vh’)1
extract(haystack,pattern)返回匹配到的第一個子串extract(‘iioomAj12123124OOBJB’, ‘\d+’)12123124
extractAll(haystack,pattern)返回匹配到的所有子串,輸出列表extractAll(‘iioomAj12123124OOBJ123B’, ‘\d+’)[12123124,123]
like(haystack,pattern)匹配到的數據返回1,否則返回0like(‘avhsca’,‘%vh%’)
like(‘avhsca’,‘%vabjh%’)
1
0
notLike(haystack, pattern)與like()函數相反notLike(‘avhsca’,‘%vh%’)
notLike(‘avhsca’,‘%vabjh%’)
0
1

3、字符串替換

函數說明舉例結果
replaceOne(haystack,pattern,replacement)替換第一個匹配到的patternreplaceOne(‘asd123cbbj464sd’, ‘sd’, ‘-’)a-123cbbj464sd
replaceAll(haystack,pattern,replacement)替換所有匹配到的patternreplaceAll(‘asd123cbbj464sd’, ‘sd’, ‘-’)a-123cbbj464-
replaceRegexpOne(haystack, pattern, replacement)正則匹配替換第一個匹配到的patternreplaceRegexpOne(‘Hello, World!’, ‘o’, ‘-’)Hell-, World!
replaceRegexpAll(haystack,pattern,replacement)正則匹配替換所有匹配到的patternreplaceRegexpAll(‘Hello, World!’, ‘o’, ‘-’)Hell-, W-rld!

4、字符串分割

函數說明舉例結果
splitByChar(separator, s)以單個字符分割字符串splitByChar(‘-’, ‘qw-asaf-asfqw-2312-asd’)['qw,‘asaf’,‘asfqw’,‘2312’,‘asd’]
splitByString(separator, s)以單個或多個字符分割字符串splitByString(‘-’, ‘qw-asaf-asfqw-2312-asd’)
splitByString(‘-a’, ‘qw-asaf-asfqw-2312-asd’)
[‘qw’,‘asaf’,‘asfqw’,‘2312’,‘asd’]
[‘qw’,‘saf’,‘sfqw-2312’,‘sd’]

5、字符串拼接

函數說明舉例結果
concat(s1,s2,…)將字符串拼接concat(‘123’, ‘abc’, ‘ABC’)123abcABC

四、條件語句

函數說明舉例結果
if(cond,then,else)條件輸出if(1 > 2, ‘正確’, ‘錯誤’)錯誤
multiIf(cond_1, then_1, cond_2, then_2…else)多條件輸出multiIf(1 > 2, ‘正確’, 2 < 0, ‘正確’, ‘錯誤’)錯誤

五、數學函數

函數說明舉例結果
e()返回e的值e()2.718281828459045
pi()返回pi的值pi()3.141592653589793
exp(x)返回e的x次方exp(1)2.718281828459045
exp2(x)返回2的x次方exp2(2)4
exp10(x)返回10的x次方exp10(1)10
log(x)返回log以e為底的對數值log(e())1
log2(x)返回log以2為底的對數值log2(2)1
log10(x)返回log以10為底的對數值log10(100)2
sqrt(x)對x開平方sqrt(4)2
cbrt(x)對x開立方cbrt(8)2
pow(x, y)返回x的y次方pow(2, 3)8

六、算術函數

函數說明舉例結果
plus(a, b)計算數值總和plus(50,1)51
minus(a, b)計算數值之差,結果總是有符號的minus(10,1)9
multiply(a, b)計算數值的乘積multiply(1, 1)1
divide(a, b)計算數值的商 ,結果類型始終是浮點類型。divide(1, 1)1
intDiv(a,b)計算數值的商,向下舍入取整(按絕對值),除以零或將最小負數除以-1時拋出異常。intDiv(1, 1)1
intDivOrZero(a,b)計算數值的商,向下舍入取整(按絕對值),與’intDiv’的不同之處在于它在除以零或將最小負數除以-1時返回零。intDivOrZero(1, 1)1
modulo(a, b)計算除法后的余數。除以零或將最小負數除以-1時拋出異常。modulo(1, 1)1
moduloOrZero(a, b)計算除法后的余數。除以零或將最小負數除以-1時拋出異常。和modulo不同之處在于,除以0時結果返回0。moduloOrZero(1, 1)0
negate(a)通過改變數值的符號位對數值取反,結果總是有符號的negate(1)-1
abs(a)計算數值(a)的絕對值abs(-1)1
gcd(a,b)返回數值的最大公約數。除以零或將最小負數除以-1時拋出異常。gcd(12,3)3
lcm(a,b)返回數值的最小公倍數。除以零或將最小負數除以-1時拋出異常。lcm(12,3)12

七、舍入函數

函數說明舉例結果
floor(x[, N])向下取數floor(123.883, 1)
floor(123.883, -1)
123.8
120
ceil(x[, N])向上取數ceil(123.883, 1)
ceil(123.883, -1)
123.9
130
round(x[, N])四舍五入round(123.883, 1)
round(123.883, -1)
123.9
120

更詳細四舍五入見:ClickHouse 四舍五入函數


八、URL操作函數

函數說明舉例結果
protocol()返回URL的協議類型protocol(‘http://www.baidu.com.cn’)http
domain()返回URL的域名domain(‘http://www.baidu.com.cn’)www.baidu.com.cn
domainWithoutWWW()返回URL不帶www的域名domainWithoutWWW(‘http://www.baidu.com.cn’)baidu.com.cn
topLevelDomain()返回頂級域名topLevelDomain(‘http://www.baidu.com.cn’)cn
firstSignificantSubdomain()Returns the “first significant subdomain”.firstSignificantSubdomain(‘http://www.baidu.com.cn’)baidu
cutToFirstSignificantSubdomain()cutToFirstSignificantSubdomain(‘http://www.baidu.com.cn’)baidu.com.cn
path()返回URL的路徑path(‘https://www.baidu.com/s?wd=split’)/s
pathFull()返回URL的完整路徑pathFull(‘https://www.baidu.com/s?wd=split’)/s?wd=split
queryString()返回URL的參數(查詢字符串)queryString(‘https://www.baidu.com/s?wd=split’)wd=split
extractURLParameters()以列表的形式返回URL的參數extractURLParameters(‘https://www.baidu.com/s?wd=split&name=tom’)[‘wd=split’,‘name=tom’]
extractURLParameterNames()以列表的形式返回URL的參數名extractURLParameterNames(‘https://www.baidu.com/s?wd=split&name=tom’)[‘wd’,‘name’]
cutQueryString()返回URL?(參數)前面的內容cutQueryString(‘https://www.baidu.com/s?wd=split&name=tom’)https://www.baidu.com/s

九、IP操作函數

函數說明舉例結果
IPv4StringToNum(s)將IPV4轉為數值,非IPV4的轉化為0IPv4StringToNum(‘23.217.198.69’)
IPv4StringToNum(‘adwh.124.qwfqw’)
400148037
0
IPv4NumToString(num)將數值轉為IPV4IPv4NumToString(400148037)23.217.198.69
IPv4NumToStringClassC(num)將數值轉為IPV4,且最后的段位用xxx代替IPv4NumToStringClassC(400148037)23.217.198.xxx

十、表操作

1、表連接操作

函數說明舉例結果
INNER JOIN內連接select table_A.id from table_A inner join table_B on table_A.id = table_B.id返回 A表 與 B表 的公共部分
LEFT OUTER JOIN左外連接select table_A.id from table_A left outer join on table_A.id = table_B.id返回 A表 不在 B表 中的部分
RIGHT OUTER JOIN右外連接select table_A.id from table_A right outer join on table_A.id = table_B.id返回 B表 不在 A表 中的部分
FULL OUTER JOIN全外連接select table_A.id from table_A full outer join on table_A.id = table_B.id返回 A 與 B表 全部,沒有為NULL

2、limit操作

函數說明舉例結果
LIMIT N查詢N條數據,一般跟ORDER BY 連用ORDER BY hit DESC LIMIT 10按照hit列降序取前10條
LIMIT N BY Clause按照Clause列查詢N條數據,一般跟ORDER BY 連用SELECT date, domain, count(1) AS hit from db.tb where…GROUP BY date, domain,ORDER BY hit DESCLIMIT 10 BY date取每天TOP10的域名

十一、字典操作

函數說明舉例結果
dictGetString()字典映射dictGetString(‘ck_abc_dic’, ‘ck_value’, tuple(_abc))

十二、聚合函數組合器

1、-If

-If可以加到任何函數之后。加了 -If 之后聚合函數需要接受一個額外的參數,一個條件,如果條件滿足,那聚合函數處理當前的數據,如果不滿足,那返回默認值。


2、-Merge


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446664.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446664.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

英語口語-文章朗讀Week9 TuesDay

朗讀文章 People living in ancient times had no alternative but to do housework manually. They fire the wood when they cook,they hand wash clothes with hands; they sweep the floor with brooms. Now, modern inventions come as a great relief to people. We co…

SpringBoot @Value注解

目錄一、非配置文件注入1、注入普通字符串2、注入JAVA系統變量3、注入表達式4、注入其他Bean屬性5、注入文件資源6、注入URL資源二、通過配置文件注入1、注入普通字符串2、注入基本類型3、注入數組類型4、注入List類型5、注入Map類型一、非配置文件注入 1、注入普通字符串 直…

C++primer 第 3 章 字符串、向量和數組 3 . 5 數組

3.5數組 數組是一種類似于標準庫類型vector&#xff08;參見3.3節&#xff0c;第86頁&#xff09;的數據結構&#xff0c;但是在性能和靈活性的權衡上又與vector有所不同。與vector相似的地方是&#xff0c;數組也是存放類型相同的對象的容器&#xff0c;這些對象本身沒有名字…

codeforces 122A-C語言解題報告

122A題目網址 題目解析 1.輸入數字(在1000以內),若能被4,7幸運數整除或只含4,7則輸出YES,否則輸出NO 舉例: 輸入: 107 輸出: NO 2.解題關鍵: 1)使用列舉法,把所有符合的幸運數列出來(int number[]) 1—2 2–224 3–22*28 24814個 2)若n是幸運數中的一個或n%幸運數0,則為YES…

SpringBoot @Value給靜態變量注入值

文章目錄一、簡介二、Value給靜態變量注入值方案一&#xff1a;set()方法設置方案二&#xff1a;PostConstruct注解修飾的方法中進行賦值三、總結一、簡介 SpringBoot 中給普通變量注入值只需在變量上添加 Value 注解即可。 application.properties 配置文件有如下配置&#…

C++primer 第 4 章 表達式 4.1基礎 4 . 2 算術運算符 4 .3 邏輯和關系運算符 4 . 4 賦值運算符 4 .5 遞增和遞減運算符 4.6成員訪問運算符

表達式由一個或多個運算對象(operand)組成&#xff0c;對表達式求值將得到一個結果(result)字面值和變量是最簡單的表達式(expression),其結果就是字面值和變量的值。把一個運算符(operator)和一個或多個運算對象組合起來可以生成較復雜的表達式 4.1基礎 有幾個基礎概念對表達…

codeforces 266B-C語言解題報告

266B題目網址 題目解析 輸入n,t,排隊情況s,輸出第t次循環后,排隊情況 舉例: 輸入: 5 1 BGGBG 輸出: GBGGB 2.輸入的n代表排隊的人數,t代表整個循環t次之后再輸出結果 3.注意點: 使用while()大循環去控制t次的循環,使用for()內層循環去遍歷整個字符串 如果if(s[j]‘B’&…

Nginx Location配置詳解

目錄一、語法二、匹配順序三、root 與 alias 的區別四、server 和 location 中的 root一、語法 Location 是 Nginx 中一個非常核心的配置&#xff0c;關于Location&#xff0c;舉個簡單的配置例子&#xff1a; server {listen 80;server_name 10.0.7.115;location / {root /d…

英語口語-文章朗讀Week9 Wednesday

英語文章 Birds of the same species flock together&#xff0c; People tend to look for someone like themselves to be friends. But having the same interests is not the only standard when we are seeking friends. In most cases, especially for adults, people l…

C++primer 第 4 章 表達式 4.7條件運算符 4.8位運算符 4.9 sizeof運算符 4.10逗號運算符 4.11類型轉換 4 . 1 2 運算符優先級表

4.7條件運算符 條件運算符(?&#xff1a;)允許我們把簡單的if else邏輯嵌入到單個表達式當中&#xff0c;條件運算符按照如下形式使用&#xff1a;cond ? expr1 : expr2;其中cond是判斷條件的表達式&#xff0c;而expr1和expr2是兩個類型相同或可能轉換為某個公共類型的表達…

Git 之 git tag標簽使用

目錄一、簡介二、本地tag操作1、創建tag標簽&#xff08;1&#xff09;創建輕量標簽&#xff08;2&#xff09;創建附注標簽2、查看tag標簽&#xff08;1&#xff09;查看標簽列表&#xff08;2&#xff09;查看標簽提交信息&#xff08;3&#xff09;在提交歷史中查看標簽3、刪…

codeforces 110A-C語言解題報告

110A題目網址 題目解析 1.輸入一個數字,如果數字中包含的4,7的數量是4或7的倍數,則輸出YES,否則輸出NO 舉例: 輸入: 40047 輸出: NO 2.注意點: 1)由于數字很長,所以使用long long int類型,使用scanf("%lld",&n)接收輸入 2)整型轉字符串,使用sprintf(字符串,“…

C++primer 第 5 章語句 5.2語句作用域 5.3條件語句 5 . 4 迭代語句 5.5跳轉語句 5.6 try語句塊和異常處理

5 . 1 簡單語句 C語言中的大多數語句都以分號結束&#xff0c;一個表達式&#xff0c;比如ival 5 , 末尾加上分號就變成了表達式語句(expression statement)。表達式語句的作用是執行表達式并丟棄掉求值結果&#xff1a;ival 5&#xff1b; // 一條沒什么實際用處的表達式語…

英語口語-文章朗讀Week9Thursday

英語文章 Everyone has his or her own dreams. Some people wants to be millionaires so they can give many generous donations later; some people want to be scientists so they can bring many conveniences to the world; some people only want to be bus-drivers s…

操作系統 內存管理相關知識

cpu執行程序的基本過程 譯碼器 輸入為n管腳&#xff0c;輸出為2^n根管腳&#xff0c;編號為從0到2^(n-1)&#xff0c;用少的輸入端控制更多的輸出端最常用的是三八譯碼器AD(Address bus)地址總線: 選中一行數據每一行 8bit 組成8吧B cpu輸入端32根線&#xff0c;輸出端就可以控…

2000年考研英語閱讀理解文章四

文章詳細解析網址 注意點 1.注意But,however等表示觀點看法轉折的詞語 2.全篇都在提及moral decline 道德下降,最后一段寫that may have more to do with life-style所以造成現象的原因應該是life-style.(主要) 前面都是在分析,最后一段點名原因 知識點 ----單詞 envy n/v…

Chrome瀏覽器必裝插件!尤其程序猿!

Chrome 瀏覽器有一個好處&#xff0c;就是插件極其豐富&#xff0c;只有你想不到的&#xff0c;沒有你找不到的&#xff0c;這恐怕是 Chrome 瀏覽器被眾多愛好者鐘愛的原因吧。 言歸正傳&#xff0c;今天來給大家推薦 10 款我自己珍藏的 Chrome 瀏覽器插件。 1、crxMouse Ch…

codeforces 160A-C語言解題報告

160A題目網址 題目解析 1.輸入硬幣的個數,分配硬幣,使拿最小的硬幣數比剩下的硬幣金額大 舉例: 輸入: 2 3 3 輸出 2 2.注意點: 1)接收整型數組時要使用&,因為只有字符數組是使用指針傳遞首地址的 scanf("%d",&a[i]); 2)使用冒泡排序,將數組從大到小排序…

英語口語-文章朗讀Week10 Monday

英語文章 Here are some valuable suggestions which may assist you in landing good job First, make your resume clear and associate it with the position you are applying for. Try to add details like your temporary jobs at college or your former jobs Second, …