本文目录:
1. 字符串函数
1.1 字符串连接函数
1.2 lower()、upper()、left()、right()
1.3 填充函数lpad()和rpad()
1.4 trim()、ltrim()、rtrim()及trim()
1.5 字符串重复函数repeat()
1.6 字符串替换函数replace()
1.7 字符串插入替换函数insert()
1.8 字符串提取substring()
1.9 字符串比较函数strcmp()
1.10 字符串长度函数length()和char_length()
1.11 字符串位置函数locate()、position()和instr()
1.12 字符串位置函数find_in_set()
1.13 字符串位置函数field()
1.14 指定位置的字符串函数elt()
1.15 字符串反转函数reverse()
2. 数学函数
2.1 绝对值函数ABS()
2.2 取模函数mod()
2.3 四舍五入函数round()
2.4 位数截断函数truncate()
2.5 地板函数floor()和天花板函数ceiling()
2.6 随机函数rand()
2.7 最值函数least()
2.8 最值函数greastest()
3. 日期时间函数
3.1 当前日期时间
3.2 week()
3.3 year()、monthname()、quarter()
3.4 hour()、minute()、second()
3.5 extract()
3.6 dayname()和dayofweek()
3.7 日期时间格式化
3.8 日期时间计算
3.9 datediff()
3.10 LAST_DAY()
4. 流程控制之条件判断函数
4.1 if()
4.2 ifnull()
4.3 nullif()
4.4 case语句
5. 类型转换函数
6. 其它实用函数
MySQL/MariaDB的内置函数比较多,这里挑选一部分进行解释,完整的内置函数列表见
1. 字符串函数
完整的内置字符串函数见
1.1 字符串连接函数
有两个字符串连接函数:concat(s1,s2,s3,...,sN)和concat_ws(sep,s1,s2,s3,...,sN)。
concat()将多个字符串连接起来形成一个长字符串。它会尝试将字符全部转换为字符型,如果存在null,则直接返回null。
mysql> select concat('a','b',1),concat(1,2,3),concat('a',null);
+-------------------+---------------+------------------+
| concat('a','b',1) | concat(1,2,3) | concat('a',null) |
+-------------------+---------------+------------------+
| ab1 | 123 | NULL |
+-------------------+---------------+------------------+
1 row in set
concat_ws(sep,s1,s2,...,sN)函数是concat()函数的特殊格式,它的第一个参数sep是用于连接s1,s2,...,sN的分隔符。分隔符可以是一个字符或一个字符串,只要合理即可。如果分隔符sep为null,则返回结果null,如果s1,s2,...,sN之间出现了null,则忽略null。
mysql> select concat_ws(':','23','59','58'),concat_ws('-','1st','2nd'),concat_ws('XXX','wo','shi');
+-------------------------------+----------------------------+-----------------------------+
| concat_ws(':','23','59','58') | concat_ws('-','1st','2nd') | concat_ws('XXX','wo','shi') |
+-------------------------------+----------------------------+-----------------------------+
| 23:59:58 | 1st-2nd | woXXXshi |
+-------------------------------+----------------------------+-----------------------------+
1 row in set
mysql> select concat_ws(':','23','59',null,'58'),concat_ws(null,'1st','2nd');
+------------------------------------+-----------------------------+
| concat_ws(':','23','59',null,'58') | concat_ws(null,'1st','2nd') |
+------------------------------------+-----------------------------+
| 23:59:58 | NULL |
+------------------------------------+-----------------------------+
1 row in set
由于concat()遇到null时总会返回null,这种处理方式可能并非所期望的结果,因此可以采用concat_ws()的方式忽略null或者采用ifnull()的方式将null转换为空字符串。
1.2 lower(string)、upper(string)、left(string,x)、right(string,x)
分别是变小写、变大写、从左取x长度字符、从右取x长度字符。
mysql> select lower('MaLong'),upper('MaLong'),left('MaLong',3),right('Malong',3);
+-----------------+-----------------+------------------+-------------------+
| lower('MaLong') | upper('MaLong') | left('MaLong',3) | right('Malong',3) |
+-----------------+-----------------+------------------+-------------------+
| malong | MALONG | MaL | ong |
+-----------------+-----------------+------------------+-------------------+
1 row in set
1.3 填充函数
有两种:lpad(string,n,pad)和rpad(string,n,pad)。
使用pad对string最左边和最右边进行填充,直到填充后总长度为n个字符。pad可以是一个字符串,如果是字符串则从左向右取直到符合长度为止。
mysql> select lpad('MaLong',10,'x'),lpad('MaLong',10,'xy'),rpad('MaLong&#