ClickHouse内置函数

更多函数请参考:https://clickhouse.tech/docs/zh/sql-reference/functions/

日期类函数

时间或日期截取函数(to)—— 返回非日期

toYear()

取日期或时间日期的年份
toYear(toDateTime(‘2018-12-11 11:12:13’)) toYear(toDate(‘2018-12-11’))
返回 2018 返回 2018

toMonth()

取日期或时间日期的月份
toMonth(toDateTime(‘2018-12-11 11:12:13’)) toMonth(toDate(‘2018-12-11’))
返回 12返回 12

toDayOfMonth()

取日期或时间日期的天(1-31)
toMonth(toDayOfMonth(‘2018-12-11 11:12:13’)) toMonth(toDayOfMonth(‘2018-12-11’))
返回 11返回 11

toDayOfWeek()

取日期或时间日期的星期(星期一为1,星期日为7)
toDayOfWeek(toDateTime(‘2018-12-11 11:12:13’)) toDayOfWeek(toDate(‘2018-12-11’))
返回 2返回 2

toHour()

取时间日期的小时
toHour(toDateTime(‘2018-12-11 11:12:13’))
返回 11

toMinute()

取时间日期的分钟
toMinute(toDateTime(‘2018-12-11 11:12:13’))
返回 12

toSecond()

取时间日期的秒
toSecond(toDateTime(‘2018-12-11 11:12:13’))
返回 13

toMonday()

取时间日期最近的周一(返回日期)
toMonday(toDate(‘2018-12-11’)) toMonday(toDateTime(‘2018-12-11 11:12:13’))
返回 2018-12-10返回 2018-12-10

toTime()

将时间日期的日期固定到某一天,保留原始时间
toTime(toDateTime(‘2018-12-11 11:12:13’))
返回 1970-01-02 11:12:13

时间或日期截取函数(toStartOf)—— 返回日期

toStartOfMonth()

取日期或时间日期的月份的第一天,返回日期
toStartOfMonth(toDateTime(‘2018-12-11 11:12:13’))toStartOfMonth(toDate(‘2018-12-11’))
返回 2018-12-01返回 2018-12-01

toStartOfQuarter()

取日期或时间日期的季度的第一天,返回日期
toStartOfQuarter(toDateTime(‘2018-12-11 11:12:13’))toStartOfQuarter(toDate(‘2018-12-11’))
返回 2018-10-01返回 2018-10-01

toStartOfYear()

取日期或时间日期的年份的第一天,返回日期
toStartOfYear(toDateTime(‘2018-12-11 11:12:13’))toStartOfYear(toDate(‘2018-12-11’))
返回 2018-01-01返回 2018-01-01

toStartOfMinute()

截取时间日期到分钟(之后归零),返回日期
toStartOfMinute(toDateTime(‘2018-12-11 11:12:13’))
返回 2018-12-11 11:12:00

toStartOfFiveMinute()

截取时间日期到最近的5的倍数分钟(之后归零),返回日期
toStartOfFiveMinute(toDateTime(‘2018-12-11 11:12:13’))
返回 2018-12-11 11:10:00

toStartOfFifteenMinutes()

截取时间日期到最近的15的倍数分钟(之后归零),返回日期
toStartOfFifteenMinutes(toDateTime(‘2018-12-11 11:12:13’))
返回 2018-12-11 11:00:00

toStartOfHour()

截取时间日期到小时(之后归零),返回日期
toStartOfHour(toDateTime(‘2018-12-11 11:12:13’))
返回 2018-12-11 11:00:00

toStartOfDay()

截取时间日期到天(之后归零),返回日期
toStartOfDay(toDateTime(‘2018-12-11 11:12:13’))
返回 2018-12-11 00:00:00

timeSlot()

将时间日期中,分钟大于等于30的归于30,分钟数小于30的归为00
timeSlot(toDateTime(‘2018-12-11 11:33:13’))timeSlot(toDateTime(‘2018-12-11 11:33:13’))
返回 2018-12-11 11:00:00返回 2018-12-11 11:30:00

日期或时间日期生成函数

now()

生成当前时间日期
now()
返回 2018-12-13 10:10:12

today()

生成今天的日期
today()
返回 2018-12-13

yesterday()

生成昨天的日期
yesterday()
返回 2018-12-12

类型转化类函数

精度保留(非四舍五入)

toDecimal32(‘whdwjfew’,8)

将数值型或者含有非数字的字符串进行精度保留
toDecimal32(23.12291, 3)toDecimal32(’_23.12291’, 3)
返回 23.122返回 0.000

toDecimal64(‘whdwjfew’,8)

将数值型或者含有非数字的字符串进行精度保留
toDecimal64(23.12291, 3)toDecimal64(’_23.12291’, 3)
返回 23.122返回 0.000

toDecimal128(‘whdwjfew’,8)

将数值型或者含有非数字的字符串进行精度保留
toDecimal128(23.12291, 3)toDecimal128(’_23.12291’, 3)
返回 23.122返回 0.000

字符串转化为整数(非整数的字符串返回0)

toUInt8OrZero()

将无符号整数字符型转化为整数型,否则返回0
toUInt8OrZero(‘123’)toUInt8OrZero(‘123.12’)
返回 123返回 0

toInt8OrZero()

将整数字符型转化为整数型,否则返回0
toInt8OrZero(‘123’)toInt8OrZero(’-123’)
返回 123返回 -123

toFloat32OrZero()

将数值字符串型转化为数值型,注意:从toFloat32OrZero开始,丢32的没有对应的函数
toFloat32OrZero(‘-123’)toFloat32OrZero(‘123.123’)
返回 -123返回 123.123

日期与时间日期转化

toDate()

将字符型日期转化为日期型
toDate(‘2018-12-24’)
返回 2018-12-24

toDateTime()

将字符型时间日期转化为时间日期型
toDateTime(‘2018-12-24 10:10:00’)
返回 2018-12-24 10:10:00

转化为字符型

toString()

将数值型、字符型、日期等转化为字符型
toString(‘2018-12-24’)toString(‘123’)
返回 2018-12-24返回 123

查看数据类型

toTypeName()

返回数据的类型
toTypeName(toString(‘123’))toTypeName(toDate(‘2018-12-24’))
返回 String返回 Date

字符串操作

基本字符串操作

empty()

判断字符串是空为1,否则为0
empty(’’)empty(‘123a’)
返回 1返回 0

notEmpty()

判断字符串是非空为1,否则为0
notEmpty(’’)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

字符串查找

match(haystack,pattern)

字符串正则匹配,返回0或1
match(‘avhsca’,'vh’)
返回 1

extract(haystack,pattern)

返回匹配到的第一个子串
extract(‘iioomAj12123124OOBJB’, ‘\d+’)
返回 12123124

extractAll(haystack,pattern)

返回匹配到的所有子串,输出列表
extractAll(‘iioomAj12123124OOBJ123B’, ‘\d+’)
返回 [12123124,123]

like(haystack,pattern)

匹配到的数据返回1,否则返回0
like(‘avhsca’,’%vh%’)like(‘avhsca’,’%vabjh%’)
返回 1返回 0

notLike(haystack, pattern)

与like()函数相反
notLike(‘avhsca’,’%vh%’)notLike(‘avhsca’,’%vabjh%’)
返回 0返回 1

字符串替换

replaceOne(haystack,pattern,replacement)

替换第一个匹配到的pattern
replaceOne(‘asd123cbbj464sd’, ‘sd’, ‘-’)
返回 a-123cbbj464sd

replaceAll(haystack,pattern,replacement)

替换所有匹配到的pattern
replaceOne(‘asd123cbbj464sd’, ‘sd’, ‘-’)
返回 a-123cbbj464-

replaceRegexpOne(haystack, pattern, replacement)

正则匹配替换第一个匹配到的pattern
replaceRegexpOne(‘Hello, World!’, ‘o’, '- ')
返回 Hell- , World!

replaceRegexpAll(haystack,pattern,replacement)

正则匹配替换所有匹配到的pattern
replaceRegexpAll(‘Hello, World!’, ‘^’, 'here: ')replaceRegexpAll(‘Hello, World!’, ‘o’, '-- ')
返回 here: Hello, World!返回 Hell-- , W-- rld!

字符串分割

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’]

字符串拼接

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

舍入函数

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

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()

Returns the part of the domain that includes top-level subdomains up to the “first significant subdomain” (see the explanation above).
cutToFirstSignificantSubdomain(‘http://www.baidu.com.cn’)
返回 baidu.com.cn

path()

返回URL的路径
path(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split’)
返回 /s

pathFull()

返回URL的完整路径
pathFull(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split’)
返回 /s?wd=SQL%E4%B8%AD%E7%9A%84split

queryString()

返回URL的参数(查询字符串)
queryString(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split’)
返回 wd=SQL%E4%B8%AD%E7%9A%84split

extractURLParameters()

以列表的形式返回URL的参数
extractURLParameters(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split&ur=qwguq’)
返回 [‘wd=SQL%E4%B8%AD%E7%9A%84split’,‘ur=qwguq’]

extractURLParameterNames()

以列表的形式返回URL的参数名
extractURLParameterNames(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split&ur=qwguq’)
返回 [‘wd’,‘ur’]

cutQueryString()

返回URL?(参数)前面的内容
cutQueryString(‘https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split&ur=qwguq’)
返回 https://www.baidu.com/s

IP操作函数

IPv4StringToNum(s)

将IPV4转为数值,非IPV4的转化为0
IPv4StringToNum(‘23.217.198.69’)IPv4StringToNum(‘adwh.124.qwfqw’)
返回 400148037返回 0

IPv4NumToString(num)

将数值转为IPV4
IPv4NumToString(400148037)
返回 23.217.198.69

IPv4NumToStringClassC(num)

将数值转为IPV4,且最后的段位用xxx代替
IPv4NumToStringClassC(400148037)
返回 23.217.198.xxx

表操作

表连接操作

INNER JOIN

内连接
A表 INNER JOIN B表
返回A表与B表的公共部分

LEFT OUTER JOIN

左外连接
A 表 LEFT OUTER JOIN B表
返回A表不在B表中的部分

RIGHT OUTER JOIN

右外连接
A 表 RIGHT OUTER JOIN B表
返回B表不在A表中的部分

FULL OUTER JOIN

全外连接
A 表 FULL OUTER JOIN B表
返回A与B表全部,没有为NULL

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))

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引中提到了条件语句if函数,但是没有具体提到clickhouse if函数的用法。根据我对clickhouse的了解,clickhouse是一个面向列的分布式数据库管理系统,没有提供类似if函数的内置函数。但是,clickhouse提供了一些其他的条件语句函数和表达式,例如CASE语句和ifNull函数,用于实现类似if函数的功能。CASE语句可以用来根据不同的条件返回不同的结果,而ifNull函数可以用来判断一个字段是否为空,如果为空则返回指定的默认值。因此,在clickhouse中,可以使用这些函数来实现逻辑判断和条件处理的功能,但没有直接等同于if函数的函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python函数综合案例.md](https://download.csdn.net/download/qq_42431718/88241199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ClickHouse常用函数统计](https://blog.csdn.net/u012111465/article/details/83070018)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值