Apache Presto - SQL 函数
到目前为止,我们正在讨论在 Presto 上运行一些简单的基本查询。 本章将讨论重要的 SQL 函数。
数学函数
数学函数对数学公式进行运算。 下表详细描述了函数列表。
S.No. | 功能与描述 |
---|---|
1. | abs(x)
返回x的绝对值 |
2. | cbrt(x)
返回x的立方根 |
3. | ceiling(x)
返回四舍五入到最接近整数的x值 |
4. | ceil(x) 天花板(x)的别名 |
5. | degrees(x)
返回x的度数 |
6. | e(x)
返回欧拉数的双精度值 |
7. | exp(x) 返回欧拉数的指数值 |
8. | floor(x)
返回x向下舍入到最接近的整数 |
9. | from_base(string,radix) 返回解释为基数的字符串值 |
10. | ln(x) 返回x的自然对数 |
11. | log2(x)
返回x的以2为底的对数 |
12. | log10(x) 返回x的以10为底的对数 |
13. | log(x,y) 返回x的底y对数 |
14. | mod(n,m)
返回n除以m的模(余数) |
15. | in() 返回 pi 值。 结果将以双精度值形式返回 |
16. | power(x,p)
返回值'p'到值x的幂 |
17. | pow(x,p) 幂(x,p)的别名 |
18. | radians(x)
将角度x转换为弧度 |
19. | rand() 弧度()的别名 |
20。 | random()
返回伪随机值 |
21. | rand(n) random() 的别名 |
22. | round(x)
返回 x 的舍入值 |
23. | round(x,d) x 值四舍五入到 'd' 小数位 |
24. | sign(x) 返回 x 的正负号函数,即 如果参数为 0,则为 0 如果参数大于 0,则为 1 如果参数小于 0,则为-1 对于双参数,该函数还返回 − 如果参数为 NaN,则为 NaN 如果参数为 +Infinity,则为 1 -1(如果参数为 -Infinity) |
25. | sqrt(x)
返回x的平方根 |
26. | to_base(x,radix)
返回类型为弓箭手。 结果作为 x 的基数返回 |
27. | truncate(x)
截断x的值 |
28. | width_bucket(x, bound1, bound2, n)
返回x指定bound1和bound2边界的bin号以及n个桶 |
29. | bucket_width(x, bin)
根据数组bins指定的bin返回x的bin号 |
三角函数
三角函数的参数表示为 radians()。 下表列出了这些功能。
S.No | 函数及描述 |
---|---|
1. | acos(x)
返回反余弦值(x) |
2. | asin(x) 返回 x 值的倒数 (x) |
3. | atan(x) 返回反正切值(x) |
4. | atan2(y,x)
返回反正切值(y/x) |
5. | cos(x) 返回余弦值(x) |
6. | cosh(x)
返回双曲余弦值(x) |
7. | sin(x)
返回正弦值(x) |
8. | tan(x) 返回正切值(x) |
9. | tanh(x) 返回双曲正切值(x) |
按位函数
下表列出了按位函数。
S.No | 函数与描述 |
---|---|
1. | bit_count(x, bits)
计算位数 |
2. | bitwise_and(x,y)
对x和y两位进行按位AND运算 |
3. | bitwise_or(x,y)
两个位之间的按位或运算x, y |
4. | bitwise_not(x)
对位x进行按位非运算 |
5. | bitwise_xor(x,y)
位x、y的异或运算 |
字符串函数
下表列出了字符串函数。
S.No | 函数与描述 |
---|---|
1. | concat(string1, ..., stringN)
连接给定的字符串 |
2. | length(string)
返回给定字符串的长度 |
3. | lower(string)
返回字符串的小写格式 |
4. | upper(string)
返回给定字符串的大写格式 |
5. | lpad(string, size, padstring)
给定字符串的左填充 |
6. | ltrim(string)
删除字符串中的前导空格 |
7. | replace(string, search, replace)
替换字符串值 |
8. | reverse(string)
反转对字符串执行的操作 |
9. | rpad(string, size, padstring)
给定字符串的正确填充 |
10. | rtrim(string)
删除字符串尾部的空格 |
11. | split(string, delimiter)
根据分隔符分割字符串并返回一个大小达到最大限制的数组 |
12. | split_part(string, delimiter, index)
按分隔符分割字符串并返回字段索引 |
13. | strpos(string, substring)
返回子字符串的起始位置 |
14. | substr(string, start)
返回给定字符串的子字符串 |
15. | substr(string, start, length)
返回给定字符串中指定长度的子字符串 |
16. | trim(string)
从字符串中删除前导和尾随空格 |
日期和时间函数
下表列出了日期和时间函数。
S.No | 函数与描述 |
---|---|
1. | current_date
返回当前日期 |
2. | current_time
返回当前时间 |
3. | current_timestamp
返回当前时间戳 |
4. | current_timezone()
返回当前时区 |
5. | now()
返回当前日期、时间戳和时区 |
6. | localtime
返回当地时间 |
7. | localtimestamp
返回本地时间戳 |
正则表达式函数
下表列出了正则表达式函数。
S.No | 函数与描述 |
---|---|
1. | regexp_extract_all(string, pattern)
返回与模式的正则表达式匹配的字符串 |
2. | regexp_extract_all(string, pattern, group)
返回与模式和组的正则表达式匹配的字符串 |
3. | regexp_extract(string, pattern)
返回与模式的正则表达式匹配的第一个子字符串 |
4. | regexp_extract(string, pattern, group)
返回与模式和组的正则表达式匹配的第一个子字符串 |
5. | regexp_like(string, pattern)
返回与模式匹配的字符串。 如果返回字符串,则值为 true,否则为 false |
6. | regexp_replace(string, pattern)
用模式替换与表达式匹配的字符串实例 |
7. | regexp_replace(string, pattern, replacement)
用模式和替换替换与表达式匹配的字符串实例 |
8. | regexp_split(string, pattern)
分割给定模式的正则表达式 |
JSON 函数
下表列出了 JSON 函数
S.No | 函数与描述 |
---|---|
1. | json_array_contains(json, value)
检查 json 数组中是否存在该值。 如果该值存在则返回 true,否则返回 false |
2. | json_array_get(json_array, index)
获取json数组中索引的元素 |
3. | json_array_length(json)
返回json数组的长度 |
4. | json_format(json)
返回json结构格式 |
5. | json_parse(string)
将字符串解析为 json |
6. | json_size(json, json_path)
返回值的大小 |
URL 函数
下表列出了 URL 函数。
S.No | 函数与描述 |
---|---|
1. | url_extract_host(url)
返回 URL 的主机 |
2. | url_extract_path(url)
返回 URL 的路径 |
3. | url_extract_port(url)
返回 URL 的端口 |
4. | url_extract_protocol(url)
返回 URL 的协议 |
5. | url_extract_query(url)
返回 URL 的查询字符串 |
聚合函数
下表列出了聚合函数。
S.No | 函数与描述 |
---|---|
1. | avg(x) 返回给定值的平均值 |
2. | min(x,n)
返回两个值中的最小值 |
3. | max(x,n)
返回两个值中的最大值 |
4. | sum(x)
返回值的总和 |
5. | count(*)
返回输入行数 |
6. | count(x)
返回输入值的计数 |
7. | checksum(x)
返回x的校验和 |
8. | arbitrary(x)
返回x的任意值 |
颜色函数
下表列出了颜色函数。
S.No | 函数与描述 |
---|---|
1. | bar(x, width)
使用 rgb low_color 和 high_color 渲染单个条 |
2. | bar(x, width, low_color, high_color)
渲染指定宽度的单个条形 |
3. | color(string)
返回输入字符串的颜色值 |
4. | render(x, color)
使用 ANSI 颜色代码使用特定颜色渲染值 x |
5. | render(b)
接受布尔值 b 并使用 ANSI 颜色代码呈现绿色 true 或红色 false |
6. | rgb(red, green, blue) 返回一个颜色值,捕获三个分量颜色值的 RGB 值,以 int 参数的形式提供,范围从 0 到 255 |
数组函数
下表列出了数组函数。
S.No | 函数与描述 |
---|---|
1. | array_max(x)
查找数组中的最大元素 |
2. | array_min(x)
查找数组中的最小元素 |
3. | array_sort(x)
对数组中的元素进行排序 |
4. | array_remove(x,element)
从数组中删除特定元素 |
5. | concat(x,y)
连接两个数组 |
6. | contains(x,element)
查找数组中给定的元素。 如果存在则返回 true,否则返回 false |
7. | array_position(x,element)
查找给定元素在数组中的位置 |
8. | array_intersect(x,y)
执行两个数组之间的交集 |
9. | element_at(array,index)
返回数组元素的位置 |
10. | slice(x,start,length)
按照指定长度对数组元素进行切片 |
Teradata 函数
下表列出了 Teradata 函数。
S.No | 函数与描述 |
---|---|
1. | index(string,substring)
返回具有给定子字符串的字符串的索引 |
2. | substring(string,start)
返回给定字符串的子字符串。 您可以在此处指定开始索引 |
3. | substring(string,start,length)
返回给定字符串中指定起始索引和字符串长度的子字符串 |