Skip to content

函数

1. 字符串函数

1.1 lpad

用法: LPAD(str,len,padstr)
返回字符串str,用字符串padstr左对齐填充至长度为len的字符。如果str长度超过len,则返回值将缩短为len个字符。如果 str、padstr或len为NULL,则函数返回NULL。

sql
mysql> SELECT LPAD('hi',4,'??');
-> '??hi'
mysql> SELECT LPAD('hi',1,'??');
-> 'h'

1.2 rpad

用法: RPAD(str,len,padstr)
该函数返回字符串st,并在其右侧填充字符串padstr,使其长度达到len个字符。如果str的长度大于len,则返回值将被缩短至len个字符。如果 str、padstr或len为NULL,则函数返回NULL。

sql
mysql> SELECT RPAD('hi',5,'?');
-> 'hi???'
mysql> SELECT RPAD('hi',1,'?');
-> 'h'

1.3 repeat

用法: REPEAT(str,count) 返回一个由字符串str重复count次组成的字符串。如果count小于1,则返回空字符串。如果str或count为NUL,返回NULL。

sql
mysql> SELECT REPEAT('MySQL', 3);
        -> 'MySQLMySQLMySQL'

1.4 md5

sh
## 获取md5数据摘要
mysql> select md5('123456');
+----------------------------------+
| md5('123456')                    |
+----------------------------------+
| e10adc3949ba59abbe56e057f20f883e |
+----------------------------------+
1 row in set (0.00 sec)

1.5 upper

shell
## 转换大小写
mysql>  select upper('aBc');
+--------------+
| upper('aBc') |
+--------------+
| ABC          |
+--------------+
1 row in set (0.00 sec)

1.6 lower

shell
+--------------+
| lower('aBc') |
+--------------+
| abc          |
+--------------+
1 row in set (0.00 sec)

1.7 concat

shell
mysql>  select concat_ws('.', 'a', 'b', 'c');
+-------------------------------+
| concat_ws('.', 'a', 'b', 'c') |
+-------------------------------+
| a.b.c                         |
+-------------------------------+
1 row in set (0.00 sec)

2. 日期函数

2.1 now(current_timestamp)

current_timestamp和now同义

sh
## 获取当前时间,可以支持毫秒
mysql> select now(), now(3);
+---------------------+-------------------------+
| now()               | now(3)                  |
+---------------------+-------------------------+
| 2025-03-17 10:28:34 | 2025-03-17 10:28:34.703 |
+---------------------+-------------------------+
1 row in set (0.00 sec)
mysql> select current_timestamp(), current_timestamp(3);
+---------------------+-------------------------+
| current_timestamp() | current_timestamp(3)    |
+---------------------+-------------------------+
| 2025-03-17 10:29:39 | 2025-03-17 10:29:39.588 |
+---------------------+-------------------------+
1 row in set (0.00 sec)

2.2 sysdate

sysdate表示sql实际开始执行时间,now表示当前时间

sh
## 延迟3秒执行
mysql> select sysdate(),sysdate(6), now(6), sleep(3), sysdate(), now();
+---------------------+----------------------------+----------------------------+
| sysdate()           | sysdate(6)                 | now(6)                     |
+---------------------+----------------------------+----------------------------+
| 2025-03-17 10:32:54 | 2025-03-17 10:32:54.289806 | 2025-03-17 10:32:54.289633 |
+---------------------+----------------------------+----------------------------+
1 row in set (0.00 sec)

2.3 date_add

sh
## 日期加减
mysql> select date_add(now(), interval 1 day);
+---------------------------------+
| date_add(now(), interval 1 day) |
+---------------------------------+
| 2025-03-18 10:36:34             |
+---------------------------------+
1 row in set (0.00 sec)

2.5 date_sub

sh
mysql> select date_sub(now(), interval 1 hour);
+----------------------------------+
| date_sub(now(), interval 1 hour) |
+----------------------------------+
| 2025-03-17 09:36:34              |
+----------------------------------+
1 row in set (0.00 sec)

2.5 date_format

用法: DATE_FORMAT(date,format)
根据格式字符串对日期值进行格式化。如果任一参数为NULL,函数返回NULL。

sh
## 格式化日期成字符串
mysql> select date_format(now(), '%Y%m%d'), date_format(now(), '%Y%m%d %H:%i:%s');
+------------------------------+---------------------------------------+
| date_format(now(), '%Y%m%d') | date_format(now(), '%Y%m%d %H:%i:%s') |
+------------------------------+---------------------------------------+
| 20250317                     | 20250317 10:38:58                     |
+------------------------------+---------------------------------------+
1 row in set (0.00 sec)

4. Json函数

4.1 json_extract

用法: JSON_EXTRACT(json_doc, path[, path] ...)
从json中按照路径参数匹配返回数据,如果是匹配多个值,则返回数据为数组。

sh
## 数据查询1,json_extract函数提取字段值,但是默认有双引号,可以使用json_unquote函数
mysql> select id, json_extract(data, '$.name') quote_name, json_unquote(json_extract(data, '$.name')) name from t_json_table;
+----+------------+------+
| id | quote_name | name |
+----+------------+------+
|  1 | "jack"     | jack |
+----+------------+------+
1 row in set (0.00 sec)
## 数据查询2,使用字段名->方式,如果使用字段名->>则去掉引号
mysql> select id, data->"$.name", data->>"$.name" from t_json_table;
+----+----------------+-----------------+
| id | data->"$.name" | data->>"$.name" |
+----+----------------+-----------------+
|  1 | "jack"         | jack            |
|  2 | NULL           | NULL            |
+----+----------------+-----------------+
2 rows in set (0.01 sec)

4.2 json_append

4.3 json_contains_key

4.4 json_merge

4.5 json_remove

4.6 json_replace

4.8 json_set

4.9 json_test_parser

4.10 json_valid