概述
1、日期类函数
1.1 时间或日期截取函数(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 |
1.2 时间或日期截取函数(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 |
1.3 日期或时间日期生成函数
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
now() | 生成当前时间日期 | now() | 返回 2018-12-13 10:10:12 |
today() | 生成今天的日期 | today() | 返回 2018-12-13 |
yesterday() | 生成昨天的日期 | yesterday() | 返回 2018-12-12 |
2、类型转化类函数
2.1 精度保留(非四舍五入)
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
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 |
2.2 字符串转化为整数(非整数的字符串返回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 |
2.3 日期与时间日期转化
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
toDate() | 将字符型日期转化为日期型 | toDate(‘2018-12-24’) | 返回 2018-12-24 |
toDateTime() | 将字符型时间日期转化为时间日期型 | toDateTime(‘2018-12-24 10:10:00’) | 返回 2018-12-24 10:10:00 |
2.4 转化为字符型
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
toString() | 将数值型、字符型、日期等转化为字符型 | toString(‘2018-12-24’)toString(‘123’) | 返回 2018-12-24返回 123 |
2.5 查看数据类型
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
toTypeName() | 返回数据的类型 | toTypeName(toString(‘123’))toTypeName(toDate(‘2018-12-24’)) | 返回 String返回 Date |
3、字符串操作
3.1 基本字符串操作
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
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 |
3.2 字符串查找
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
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 |
3.3 字符串替换
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
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! |
3.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’] |
3.5 字符串拼接
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
concat(s1,s2,…) | 将字符串拼接 | concat(‘123’, ‘abc’, ‘ABC’) | 返回 123abcABC |
4、条件语句
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
if(cond,then,else) | 条件输出 | if(1 > 2, ‘正确’, ‘错误’) | 返回 错误 |
multiIf(cond_1, then_1, cond_2, then_2…else) | 多条件输出 | multiIf(1 > 2, ‘正确’, 2 < 0, ‘正确’, ‘错误’) | 返回 错误 |
5、数学函数
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
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 |
6、舍入函数
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
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 |
7、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 |
8、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 |
9、表操作
9.1 表连接操作
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
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 |
9.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的域名 |
10、字典操作
函数 | 用途 | 举例 | 结果 |
---|---|---|---|
dictGetString() | 字典映射 | dictGetString(‘ck_abc_dic’, ‘ck_value’, tuple(_abc)) |
最后
以上就是热心草莓为你收集整理的ClickHouse函数整理(详细)的全部内容,希望文章能够帮你解决ClickHouse函数整理(详细)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复