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.mzph.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, …