大家好,欢迎来到IT知识分享网。
函数使用帮助
在命令行终端输入 “? + 空格 + 函数名” ,可以查看对应函数使用说明;
例如 : 查看 max 函数使用方法:
条件函数
- if 函数
`if(boolean condition, type valueTrue, type valueFalseOrNull)` 如果表达式 condition 成立,返回结果 valueTrue;否则,返回结果 valueFalseOrNull 返回类型: valueTrue 表达式结果的类型
- null 处理函数
函数名 |
语法 |
说明 |
示例 |
ifnull |
ifnull(expr1, expr2) |
如果 expr1 的值不为 NULL 则返回 expr1,否则返回 expr2 |
|
nvl |
nvl(expr1, expr2) |
如果 expr1 的值不为 NULL 则返回 expr1,否则返回 expr2 |
|
coalesce |
coalesce(expr1, expr2, …., expr_n)) |
返回参数中的第一个非空表达式(从左向右) |
|
nullif |
nullif(expr1, expr2) |
如果两个参数相等,则返回NULL。否则返回第一个参数的值。 |
|
聚合函数
- min,max,sum,avg,count
- min_by 和 max_by
函数名 |
语法 |
说明 |
示例 |
max_by |
MAX_BY(expr1, expr2) |
返回与 expr2 的最大值关联的 expr1 的值。 |
|
min_by |
MIN_BY(expr1, expr2) |
返回与 expr2 的最小值关联的 expr1 的值。 |
|
- group_concat
语法 : VARCHAR GROUP_CONCAT([DISTINCT] VARCHAR str[, VARCHAR sep] [ORDER BY { col_name | expr} [ASC | DESC]]) 解释 : 1. 该函数是类似于 sum() 的聚合函数,group_concat 将结果集中的多行结果连接成一个字符串。第二个参数 sep 为字符串之间的连接符号,该参数可以省略。该函数通常需要和 group by 语句一起使用。 2. 支持Order By进行多行结果的排序,排序和聚合列可不同。 3. group_concat对于收集的字段只能是string,varchar,char类型; 4. 当不指定分隔符的时候,默认使⽤ ','; 5. VARCHAR :代表GROUP_CONCAT函数返回值类型; 6. [DISTINCT]:可选参数,针对需要拼接的列的值进⾏去重; 7. [, VARCHAR sep]:拼接成字符串的分隔符,默认是 ',';
- collect_list 和 collect_set
函数名 |
语法 |
说明 |
示例 |
collect_set |
ARRAY<T> collect_set(expr[,max_size]) |
返回一个对`expr`去重后的数组。可选参数`max_size`,通过设置该参数能够将结果数组的大小限制为 `max_size` 个元素。 得到的结果数组中不包含NULL元素,数组中的元素顺序不固定。该函数具有别名`group_uniq_array`。 |
|
collect_list |
ARRAY<T> collect_list(expr[,max_size]) |
返回一个包含 expr 中所有元素(不包括NULL)的数组,可选参数`max_size`,通过设置该参数能够将结果数组的大小限制为 `max_size` 个元素。 得到的结果数组中不包含NULL元素,数组中的元素顺序不固定。该函数具有别名`group_array`。 |
|
日期函数
- curdate,current_date,curtime,current_time,current_timestamp,now
函数名 |
语法 |
说明 |
示例 |
curdate/current_date |
DATE CURDATE() |
获取当前的日期,以DATE类型返回 |
|
curtime/current_time |
获得当前的时间,以TIME类型返回 |
|
|
now |
DATETIME NOW() |
获得当前的时间,以Datetime类型返回; 注意: 1. 当前只有DatetimeV2数据类型可支持秒精度 2. 受限于JDK实现,如果用户使用JDK8构建FE,则精度最多支持到毫秒(小数点后三位),更大的精度位将全部填充0。如果用户有更高精度需求,请使用JDK11。 |
|
current_timestamp |
DATETIME CURRENT_TIMESTAMP() |
获得当前的时间,以Datetime类型返回; 注意: 1. 当前只有DatetimeV2数据类型可支持秒精度 2. 受限于JDK实现,如果用户使用JDK8构建FE,则精度最多支持到毫秒(小数点后三位),更大的精度位将全部填充0。如果用户有更高精度需求,请使用JDK11。 |
|
- last_day
语法 : DATE last_day(DATETIME date) 解释 : 返回输入日期中月份的最后一天;所以返回的日期中,年和月不变,日可能是如下情况: '28'(非闰年的二月份), '29'(闰年的二月份), '30'(四月,六月,九月,十一月), '31'(一月,三月,五月,七月,八月,十月,十二月) 示例 : mysql > select last_day('2000-02-03'); +-------------------+ | last_day('2000-02-03 00:00:00') | +-------------------+ | 2000-02-29 | +-------------------+
- from_unixtime
语法 : DATETIME FROM_UNIXTIME(BIGINT unix_timestamp[, VARCHAR string_format]) 解释 : 将 unix 时间戳转化为对应的 time 格式,返回的格式由 `string_format` 指定; 支持 `date_format` 中的 format 格式,默认为 %Y-%m-%d %H:%i:%s; 传入的是整型,返回的是字符串类型; 其余 `string_format` 格式是非法的,返回 NULL; 目前支持的 `unix_timestamp` 范围为 `[0, ]`,超出范围的 `unix_timestamp` 将会得到 NULL; 注意 : doris-2.0.3 版本传入的整形会隐式转换成 int 类型,不是bigint 类型; 日期格式 : yyyyMMdd yyyy-MM-dd yyyy-MM-dd HH:mm:ss 示例 : mysql> select from_unixtime(); +---------------------------+ | from_unixtime() | +---------------------------+ | 2007-12-01 00:30:19 | +---------------------------+ mysql> select from_unixtime(, 'yyyy-MM-dd HH:mm:ss'); +--------------------------------------------------+ | from_unixtime(, 'yyyy-MM-dd HH:mm:ss') | +--------------------------------------------------+ | 2007-12-01 00:30:19 | +--------------------------------------------------+ mysql> select from_unixtime(, '%Y-%m-%d'); +-----------------------------------------+ | from_unixtime(, '%Y-%m-%d') | +-----------------------------------------+ | 2007-12-01 | +-----------------------------------------+ mysql> select from_unixtime(, '%Y-%m-%d %H:%i:%s'); +--------------------------------------------------+ | from_unixtime(, '%Y-%m-%d %H:%i:%s') | +--------------------------------------------------+ | 2007-12-01 00:30:19 | +--------------------------------------------------+ ``` 对于超过范围的时间戳,可以采用from_second函数 `DATETIME FROM_SECOND(BIGINT unix_timestamp)` ``` mysql> select from_second(); +--------------------------+ | from_second() | +--------------------------+ | 2650-07-06 16:21:10 | +--------------------------+
- from_second
语法 : -- 秒 `DATETIME FROM_SECOND(BIGINT unix_timestamp)` -- 毫秒 `DATETIME FROM_MILLISECOND(BIGINT unix_timestamp)` -- 微妙 `DATETIME FROM_MICROSECOND(BIGINT unix_timestamp)` 解释 : 将时间戳转化为对应的 DATETIME 传入的是整型,返回的是DATETIME类型 示例 : mysql> select from_microsecond(0); +----------------------------+ | from_microsecond(0) | +----------------------------+ | 1970-01-01 08:00:00.000000 | +----------------------------+ mysql> select from_microsecond(); +----------------------------+ | from_microsecond() | +----------------------------+ | 1970-01-01 08:00:12. | +----------------------------+ mysql> select from_millisecond(0); +-------------------------+ | from_millisecond(0) | +-------------------------+ | 1970-01-01 08:00:00.000 | +-------------------------+ mysql> select from_millisecond(); +----------------------------+ | from_millisecond() | +----------------------------+ | 1970-01-01 11:25:45.678 | +----------------------------+ mysql> select from_second(); +--------------------------+ | from_second() | +--------------------------+ | 2650-07-06 16:21:10 | +--------------------------+
- unix_timestamp
语法 : INT UNIX_TIMESTAMP([DATETIME date[, STRING fmt]]) 解释 : 将 Date 或者 Datetime 类型转化为 unix 时间戳。 如果没有参数,则是将当前的时间转化为时间戳。 参数需要是 Date 或者 Datetime 类型。 对于在 1970-01-01 00:00:00 之前或 2038-01-19 03:14:07 之后的时间,该函数将返回 0。 Format 的格式请参阅 `date_format` 函数的格式说明。 该函数受时区影响。 示例 : mysql> select unix_timestamp(); +------------------+ | unix_timestamp() | +------------------+ | | +------------------+ mysql> select unix_timestamp('2007-11-30 10:30:19'); +---------------------------------------+ | unix_timestamp('2007-11-30 10:30:19') | +---------------------------------------+ | | +---------------------------------------+ mysql> select unix_timestamp('2007-11-30 10:30-19', '%Y-%m-%d %H:%i-%s'); +---------------------------------------+ | unix_timestamp('2007-11-30 10:30-19') | +---------------------------------------+ | | +---------------------------------------+ mysql> select unix_timestamp('2007-11-30 10:30%3A19', '%Y-%m-%d %H:%i%%3A%s'); +---------------------------------------+ | unix_timestamp('2007-11-30 10:30%3A19') | +---------------------------------------+ | | +---------------------------------------+ mysql> select unix_timestamp('1969-01-01 00:00:00'); +---------------------------------------+ | unix_timestamp('1969-01-01 00:00:00') | +---------------------------------------+ | 0 | +---------------------------------------+
- to_date
语法 : `DATE TO_DATE(DATETIME)` 解释 ; 返回 DATETIME 类型中的日期部分。 示例 : mysql> select to_date("2020-02-02 00:00:00"); +--------------------------------+ | to_date('2020-02-02 00:00:00') | +--------------------------------+ | 2020-02-02 | +--------------------------------+
- extract
语法 : `INT extract(unit FROM DATETIME)` 解释 : 提取DATETIME某个指定单位的值。单位可以为year, month, day, hour, minute, second 或者 microsecond 示例 : mysql> select extract(year from '2022-09-22 17:01:30') as year, -> extract(month from '2022-09-22 17:01:30') as month, -> extract(day from '2022-09-22 17:01:30') as day, -> extract(hour from '2022-09-22 17:01:30') as hour, -> extract(minute from '2022-09-22 17:01:30') as minute, -> extract(second from '2022-09-22 17:01:30') as second, -> extract(microsecond from cast('2022-09-22 17:01:30.000123' as datetimev2(6))) as microsecond; +------+-------+------+------+--------+--------+-------------+ | year | month | day | hour | minute | second | microsecond | +------+-------+------+------+--------+--------+-------------+ | 2022 | 9 | 22 | 17 | 1 | 30 | 123 | +------+-------+------+------+--------+--------+-------------+
- date_add,date_sub,datediff
函数名 |
语法 |
说明 |
示例 |
date_add |
`INT DATE_ADD(DATETIME date, INTERVAL expr type)` |
向日期添加指定的时间间隔。 date 参数是合法的日期表达式。 expr 参数是您希望添加的时间间隔。 type 参数可以是下列值:YEAR, MONTH, DAY, HOUR, MINUTE, SECOND |
mysql> select date_add(‘2010-11-30 23:59:59’, INTERVAL 2 DAY); +————————————————-+ | date_add(‘2010-11-30 23:59:59’, INTERVAL 2 DAY) | +————————————————-+ | 2010-12-02 23:59:59 | +————————————————-+ |
date_sub |
`DATETIME DATE_SUB(DATETIME date, INTERVAL expr type)` |
从日期减去指定的时间间隔 date 参数是合法的日期表达式。 expr 参数是您希望添加的时间间隔。 type 参数可以是下列值:YEAR, MONTH, DAY, HOUR, MINUTE, SECOND |
mysql> select date_sub(‘2010-11-30 23:59:59’, INTERVAL 2 DAY); +————————————————-+ | date_sub(‘2010-11-30 23:59:59’, INTERVAL 2 DAY) | +————————————————-+ | 2010-11-28 23:59:59 | +————————————————-+ |
datediff |
`INT DATEDIFF(DATETIME expr1, DATETIME expr2)` |
计算expr1 – expr2,结果精确到天。 expr1 和 expr2 参数是合法的日期或日期/时间表达式。 注释:只有值的日期部分参与计算。 |
mysql> select datediff(CAST(‘2007-12-31 23:59:59’ AS DATETIME), CAST(‘2007-12-30’ AS DATETIME)); +———————————————————————————–+ | datediff(CAST(‘2007-12-31 23:59:59’ AS DATETIME), CAST(‘2007-12-30’ AS DATETIME)) | +———————————————————————————–+ | 1 | +———————————————————————————–+ mysql> select datediff(CAST(‘2010-11-30 23:59:59’ AS DATETIME), CAST(‘2010-12-31’ AS DATETIME)); +———————————————————————————–+ | datediff(CAST(‘2010-11-30 23:59:59’ AS DATETIME), CAST(‘2010-12-31’ AS DATETIME)) | +———————————————————————————–+ | -31 | +———————————————————————————–+ |
- date_format
语法 : `VARCHAR DATE_FORMAT(DATETIME date, VARCHAR format)` 解释 : 将日期类型按照format的类型转化为字符串, 当前支持最大128字节的字符串,如果返回值长度超过128字节,则返回NULL。 date 参数是合法的日期。format 规定日期/时间的输出格式。 可以使用的格式有: %a | 缩写星期名 %b | 缩写月名 %c | 月,数值 %D | 带有英文前缀的月中的天 %d | 月的天,数值(00-31) %e | 月的天,数值(0-31) %f | 微秒 %H | 小时 (00-23) %h | 小时 (01-12) %I | 小时 (01-12) %i | 分钟,数值(00-59) %j | 年的天 (001-366) %k | 小时 (0-23) %l | 小时 (1-12) %M | 月名 %m | 月,数值(00-12) %p | AM 或 PM %r | 时间,12-小时(hh:mm:ss AM 或 PM) %S | 秒(00-59) %s | 秒(00-59) %T | 时间, 24-小时 (hh:mm:ss) %U | 周 (00-53) 星期日是一周的第一天 %u | 周 (00-53) 星期一是一周的第一天 %V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 %v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 %W | 星期名 %w | 周的天 (0=星期日, 6=星期六) %X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 %x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 %Y | 年,4 位 %y | 年,2 位 %% | 用于表示 % 还可以使用三种特殊格式: yyyyMMdd yyyy-MM-dd yyyy-MM-dd HH:mm:ss 示例 : mysql> select date_format('2009-10-04 22:23:00', '%W %M %Y'); +------------------------------------------------+ | date_format('2009-10-04 22:23:00', '%W %M %Y') | +------------------------------------------------+ | Sunday October 2009 | +------------------------------------------------+ mysql> select date_format('2007-10-04 22:23:00', '%H:%i:%s'); +------------------------------------------------+ | date_format('2007-10-04 22:23:00', '%H:%i:%s') | +------------------------------------------------+ | 22:23:00 | +------------------------------------------------+ mysql> select date_format('1900-10-04 22:23:00', '%D %y %a %d %m %b %j'); +------------------------------------------------------------+ | date_format('1900-10-04 22:23:00', '%D %y %a %d %m %b %j') | +------------------------------------------------------------+ | 4th 00 Thu 04 10 Oct 277 | +------------------------------------------------------------+ mysql> select date_format('1997-10-04 22:23:00', '%H %k %I %r %T %S %w'); +------------------------------------------------------------+ | date_format('1997-10-04 22:23:00', '%H %k %I %r %T %S %w') | +------------------------------------------------------------+ | 22 22 10 10:23:00 PM 22:23:00 00 6 | +------------------------------------------------------------+ mysql> select date_format('1999-01-01 00:00:00', '%X %V'); +---------------------------------------------+ | date_format('1999-01-01 00:00:00', '%X %V') | +---------------------------------------------+ | 1998 52 | +---------------------------------------------+ mysql> select date_format('2006-06-01', '%d'); +------------------------------------------+ | date_format('2006-06-01 00:00:00', '%d') | +------------------------------------------+ | 01 | +------------------------------------------+ mysql> select date_format('2006-06-01', '%%%d'); +--------------------------------------------+ | date_format('2006-06-01 00:00:00', '%%%d') | +--------------------------------------------+ | %01 | +--------------------------------------------+
字符串函数
- length,lower,upper,reverse
获取到字符串的⻓度,对字符串转⼤⼩写和字符串的反转;
- lpad,rpad
向左/右边补⻬ 语法 : VARCHAR rpad(VARCHAR str, INT len, VARCHAR pad) VARCHAR lpad(VARCHAR str, INT len, VARCHAR pad) 解释 : -- 返回 str 中⻓度为 len(从⾸字⺟开始算起)的字符串。 --如果 len ⼤于 str 的⻓度,则在 str 的后⾯不断补充 pad 字符, --直到该字符串的⻓度达到 len 为⽌。如果 len ⼩于 str 的⻓度, --该函数相当于截断 str 字符串,只返回⻓度为 len 的字符串。 --len 指的是字符⻓度⽽不是字节⻓度。
- concat,concat_ws
concat : 语法 : VARCHAR concat(VARCHAR,...) 解释 : 将多个字符串连接起来, 如果参数中任意一个值是 NULL,那么返回的结果就是 NULL; concat_ws : 语法 : VARCHAR concat_ws(VARCHAR sep, VARCHAR str,...) VARCHAR concat_ws(VARCHAR sep, ARRAY array) 解释 : 使用第一个参数 sep 作为连接符,将第二个参数以及后续所有参数(或ARRAY中的所有字符串)拼接成一个字符串。 如果分隔符是 NULL,返回 NULL。 `concat_ws`函数不会跳过空字符串,会跳过 NULL 值。
- substr
语法: VARCHAR substr(VARCHAR content, INT start, INT length) 解释 : 求子字符串,返回第一个参数描述的字符串中从start开始长度为len的部分字符串。首字母的下标为1。
- ends_with,starts_with
ends_with : 语法 : BOOLEAN ENDS_WITH(VARCHAR str, VARCHAR suffix) 解释 : 如果字符串以指定后缀结尾,返回true。否则,返回false。任意参数为NULL,返回NULL。 starts_with : 语法 : BOOLEAN ENDS_WITH(VARCHAR str, VARCHAR suffix) 解释 : 如果字符串以指定后缀结尾,返回true。否则,返回false。任意参数为NULL,返回NULL。
- trim,ltrim,rtrim
trim : 语法 : VARCHAR trim(VARCHAR str[, VARCHAR rhs]) 解释 : 当没有rhs参数时,将参数 str 中右侧和左侧开始部分连续出现的空格去掉,否则去掉rhs; ltrim: 语法 : VARCHAR ltrim(VARCHAR str[, VARCHAR rhs]) 解释 : 当没有rhs参数时,将参数 str 中从左侧部分开始部分连续出现的空格去掉,否则去掉rhs rtrim : 语法 : VARCHAR rtrim(VARCHAR str[, VARCHAR rhs]) 解释 : 当没有rhs参数时,将参数 str 中从右侧部分开始部分连续出现的空格去掉,否则去掉rhs
- null_or_empty,not_null_or_empty
null_or_empty : 语法 : BOOLEAN NULL_OR_EMPTY (VARCHAR str) 解释 : 如果字符串为空字符串或者NULL,返回true。否则,返回false。 not_null_or_empty : 语法 : BOOLEAN NOT_NULL_OR_EMPTY (VARCHAR str) 解释 : 如果字符串为空字符串或者NULL,返回false。否则,返回true。
- replace
语法 : VARCHAR REPLACE (VARCHAR str, VARCHAR old, VARCHAR new) 解释 : 将str字符串中的old子串全部替换为new串
- split_part
语法 : VARCHAR split_part(VARCHAR content, VARCHAR delimiter, INT field) 解释 : 根据分割符拆分字符串, 返回指定的分割部分(从一或负一开始计数)。field字段支持负数,代表从右往左倒着截取并取数。 `delimiter` 和 `field` 参数需要是常量, 不支持变量。
10.money_format
语法 : VARCHAR money_format(Number) 解释 : 将数字按照货币格式输出,整数部分每隔3位用逗号分隔,小数部分保留2位 示例 : mysql> select money_format(1123.456); +------------------------+ | money_format(1123.456) | +------------------------+ | 1,123.46 | +------------------------+
数学函数
- ceil和floor
语法 : BIGINT ceil(DOUBLE x) 解释 : 返回大于或等于`x`的最小整数值. 语法 : BIGINT floor(DOUBLE x) 解释 : 返回小于或等于`x`的最大整数值.
- round
语法 : T round(T x[, d]) 解释 : 将`x`四舍五入后保留d位小数,d默认为0。如果d为负数,则小数点左边d位为0。如果x或d为null,返回null。
- truncate
语法 : DOUBLE truncate(DOUBLE x, INT d) 解释 : 按照保留小数的位数`d`对`x`进行数值截取。 规则如下: 当`d > 0`时:保留`x`的`d`位小数 当`d = 0`时:将`x`的小数部分去除,只保留整数部分 当`d < 0`时:将`x`的小数部分去除,整数部分按照 `d`所指定的位数,采用数字`0`进行替换
- abs
语法 : SMALLINT abs(TINYINT x) INT abs(SMALLINT x) BIGINT abs(INT x) LARGEINT abs(BIGINT x) LARGEINT abs(LARGEINT x) DOUBLE abs(DOUBLE x) FLOAT abs(FLOAT x) DECIMAL abs(DECIMAL x) 解释 : 返回`x`的绝对值.
- pow
语法 : DOUBLE pow(DOUBLE a, DOUBLE b) 解释 : 返回`a`的`b`次方.
- greatest 和 least
语法 : greatest(col_a, col_b, …, col_n) 解释 : 比较`n`个`column`的大小返回其中的最大值.若`column`中有`NULL`,则返回`NULL`. 语法 : least(col_a, col_b, …, col_n) 解释 : 比较`n`个`column`的大小返回其中的最小值.若`column`中有`NULL`,则返回`NULL`.
数组函数
Only supported in vectorized engine
仅⽀持向量化引擎中使⽤ : mysql> set enable_vectorized_engine=true;
- array()
语法 : ARRAY<T> 解释 : 由T类型元素组成的数组,不能作为key列使用。目前支持在Duplicate模型的表中使用。 2.0 版本之后支持在Unique模型的表中非key列使用。 T支持的类型有: BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, DECIMAL, DATE, DATEV2, DATETIME, DATETIMEV2, CHAR, VARCHAR, STRING 示例 : mysql> CREATE TABLE `array_test` ( `id` int(11) NULL COMMENT "", `c_array` ARRAY<int(11)> NULL COMMENT "" ) ENGINE=OLAP DUPLICATE KEY(`id`) COMMENT "OLAP" DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "in_memory" = "false", "storage_format" = "V2" ); mysql> INSERT INTO `array_test` VALUES (1, [1,2,3,4,5]); mysql> INSERT INTO `array_test` VALUES (2, [6,7,8]), (3, []), (4, null); mysql> SELECT * FROM `array_test`; +------+-----------------+ | id | c_array | +------+-----------------+ | 1 | [1, 2, 3, 4, 5] | | 2 | [6, 7, 8] | | 3 | [] | | 4 | NULL | +------+-----------------+
- array_min,array_max,array_avg,array_sum,array_size
1 求数组中的最⼩值,最⼤值,平均值,数组中所有元素的和,数组的⻓度 2 数组中的NULL值会被跳过。空数组以及元素全为NULL值的数组,结果返回NULL值。 示例 : MySQL [test]> select array_min([-1,null, 1]); +-------------------------------+ | array_min(ARRAY(-1, NULL, 1)) | +-------------------------------+ | -1 | +-------------------------------+
- array_remove
语法 : ARRAY<T> array_remove(ARRAY<T> arr, T val) 解释 : 返回移除所有的指定元素后的数组,如果输入参数为NULL,则返回NULL 示例 : mysql> select k1, k2, array_remove(k2, k1) from array_type_table_nullable; +------+-----------+--------------------------+ | k1 | k2 | array_remove(`k2`, `k1`) | +------+-----------+--------------------------+ | NULL | [1, 2, 3] | NULL | | 1 | NULL | NULL | | NULL | [NULL, 1] | NULL | | 1 | [NULL, 1] | [NULL] | +------+-----------+--------------------------+
- array_sort
语法 : ARRAY<T> array_sort(ARRAY<T> arr) 解释 : 返回按升序排列后的数组,如果输入数组为NULL,则返回NULL。 如果数组元素包含NULL, 则输出的排序数组会将NULL放在最前面。
- array_contains
语法 : BOOLEAN array_contains(ARRAY<T> arr, T value) 解释 : 判断数组中是否包含value。返回结果如下: 1 - value在数组arr中存在; 0 - value不存在数组arr中; NULL - arr为NULL时。 示例 : mysql> SELECT id,c_array,array_contains(c_array, 5) FROM `array_test`; +------+-----------------+------------------------------+ | id | c_array | array_contains(`c_array`, 5) | +------+-----------------+------------------------------+ | 1 | [1, 2, 3, 4, 5] | 1 | | 2 | [6, 7, 8] | 0 | | 3 | [] | 0 | | 4 | NULL | NULL | +------+-----------------+------------------------------+
- array_except
语法 : ARRAY<T> array_except(ARRAY<T> array1, ARRAY<T> array2) 解释 : 返回一个数组,包含所有在array1内但不在array2内的元素,不包含重复项,如果输入参数为NULL,则返回NULL; 类似于取差集,将返回的差集结果数组去重; 示例 : mysql> select k1,k2,k3,array_except(k2,k3) from array_type_table_nullable; +------+-----------------+--------------+--------------------------+ | k1 | k2 | k3 | array_except(`k2`, `k3`) | +------+-----------------+--------------+--------------------------+ | 1 | [1, NULL, 3] | [1, 3, 5] | [NULL] | | 2 | [NULL, NULL, 2] | [2, NULL, 4] | [] | | 3 | NULL | [1, 2, 3] | NULL | +------+-----------------+--------------+--------------------------+
- array_intersect
语法 : ARRAY<T> array_intersect(ARRAY<T> array1, ARRAY<T> array2) 解释 : 返回一个数组,包含array1和array2的交集中的所有元素,不包含重复项,如果输入参数为NULL,则返回NULL; 两个数组取交集后。将返回的结果去重; 示例 : mysql> select k1,k2,k3,array_intersect(k2,k3) from array_type_table_nullable; +------+-----------------+--------------+-----------------------------+ | k1 | k2 | k3 | array_intersect(`k2`, `k3`) | +------+-----------------+--------------+-----------------------------+ | 1 | [1, NULL, 3] | [1, 3, 5] | [1, 3] | | 2 | [NULL, NULL, 2] | [2, NULL, 4] | [NULL, 2] | | 3 | NULL | [1, 2, 3] | NULL | +------+-----------------+--------------+-----------------------------+
- array_union
语法 : ARRAY<T> array_union(ARRAY<T> array1, ARRAY<T> array2) 解释 : 返回一个数组,包含array1和array2的并集中的所有元素,不包含重复项,如果输入参数为NULL,则返回NULL; 取两个数组的并集,将返回的结果去重; 示例 : mysql> select k1,k2,k3,array_union(k2,k3) from array_type_table_nullable; +------+-----------------+--------------+-------------------------+ | k1 | k2 | k3 | array_union(`k2`, `k3`) | +------+-----------------+--------------+-------------------------+ | 1 | [1, NULL, 3] | [1, 3, 5] | [1, NULL, 3, 5] | | 2 | [NULL, NULL, 2] | [2, NULL, 4] | [NULL, 2, 4] | | 3 | NULL | [1, 2, 3] | NULL | +------+-----------------+--------------+-------------------------+
- array_distinct
语法 : ARRAY<T> array_distinct(ARRAY<T> arr) 解释 : 返回去除了重复元素的数组,如果输入数组为NULL,则返回NULL。 示例 : mysql> select k1, k2, array_distinct(k2) from array_test01; +------+------------------------------------------+---------------------------+ | k1 | k2 | array_distinct(`k2`) | +------+------------------------------------------+---------------------------+ | 1 | ['a', 'b', 'c', 'd', 'e'] | ['a', 'b', 'c', 'd', 'e'] | | 2 | ['f', 'g', 'h'] | ['f', 'g', 'h'] | | 3 | [''] | [''] | | 3 | [NULL] | [NULL] | | 5 | ['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c'] | ['a', 'b', 'c', 'd', 'e'] | | 6 | NULL | NULL | | 7 | ['a', 'b', NULL] | ['a', 'b', NULL] | | 8 | ['a', 'b', NULL, NULL] | ['a', 'b', NULL] | +------+------------------------------------------+---------------------------+
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/166036.html