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)
返回给定字符串中指定起始索引和字符串长度的子字符串 |

