文章目录
前言
MySQL 中的函数包括:数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数等,下面将介绍MySQL中这些函数的功能与用法。
1.数学函数
MySQL支持多种数学类型的函数,它们包括:绝对值函数、随机函数等。下表列出了MySQL中经常使用的数组函数。
函数名称 | 解释说明 |
---|---|
ABS (num) | 返回num的绝对值 |
CEIL(num) | 返回大于num的最小整数值 |
FLOOR(num) | 返回小于num的最大正整数 |
MOD(num1,num2) | 返回 num1 % num2 的值 |
RAND() | 返回0-1的随机数 |
TRUNCATE(num1,num2) | 返回num1 截断num2 位小数 |
ROUND(num1,num2) | 返回参数num1的四舍五入带有num2小数的值 |
POW(x,y) | 返回x的y次方 |
1.1 ABS
下列显示了对正数与负数的使用绝对值函数的结果。
mysql> mysql> select abs(-1.2),abs(1.2);
+-----------+----------+
| abs(-1.2) | abs(1.2) |
+-----------+----------+
| 1.2 | 1.2 |
+-----------+----------+
1 row in set (0.00 sec)
1.2 CEIL
CEIL(X) 返回一个比x大的最小整数
mysql> select ceil(1.6),ceil(1.2),ceil(-1.2);
+-----------+-----------+------------+
| ceil(1.6) | ceil(1.2) | ceil(-1.2) |
+-----------+-----------+------------+
| 2 | 2 | -1 |
+-----------+-----------+------------+
1 row in set (0.00 sec)
1.3 FLOOR
FLOOR(x) 返回一个比x小的最大整数
mysql> select FLOOR(1.8),FLOOR(-1.8);
+------------+-------------+
| FLOOR(1.8) | FLOOR(-1.8) |
+------------+-------------+
| 1 | -2 |
+------------+-------------+
1 row in set (0.00 sec)
1.4 MOD
MOD(x,y) 返回x%y的模
mysql> select mod(10,3);
+-----------+
| mod(10,3) |
+-----------+
| 1 |
+-----------+
1 row in set (0.00 sec)
1.5 RAND
RAND() 返回0-1 的随机数
mysql> select rand();
+--------------------+
| rand() |
+--------------------+
| 0.8903573117129107 |
+--------------------+
1 row in set (0.00 sec)
1.6 ROUND
round(x,y) 返回参数x的四舍五入的y位尾数
mysql> select round(1.23,2),round(1.67,2),round(1.44,2);
+---------------+---------------+---------------+
| round(1.23,2) | round(1.67,2) | round(1.44,2) |
+---------------+---------------+---------------+
| 1.23 | 1.67 | 1.44 |
+---------------+---------------+---------------+
1 row in set (0.00 sec)
1.7 TRUNCATE
TRUNCATE(x,y) 返回x截断为y位小数的结果

mysql> select round(1.23,2),round(1.67,2),round(1.44,2),truncate(1.23,2),truncate(1.67,2),truncate(1.44,2);
+---------------+---------------+---------------+------------------+------------------+------------------+
| round(1.23,2) | round(1.67,2) | round(1.44,2) | truncate(1.23,2) | truncate(1.67,2) | truncate(1.44,2) |
+---------------+---------------+---------------+------------------+------------------+------------------+
| 1.23 | 1.67 | 1.44 | 1.23 | 1.67 | 1.44 |
+---------------+---------------+---------------+------------------+------------------+------------------+
1 row in set (0.00 sec)
1.8 POW
POW(x,y) 返回x的y次方
mysql> select pow(2,3);
+----------+
| pow(2,3) |
+----------+
| 8 |
+----------+
1 row in set (0.00 sec)
MySQL同时也支持三角函数(正弦函数、余弦函数、正切函数、余切函数)、对数函数 ,一般在日常开发中使用到数学函数的场景几乎没有,一般我们都是在Java程序中处理好相关的数学计算后,在存储到MySQL中。
2. 字符串函数
字符串函数是MySQL中最常见的函数,下面列出了常用的字符串函数:
2.1 CHAR_LENGTH与LENGTH
mysql> select char_length('abc');
+--------------------+
| char_length('abc') |
+--------------------+
| 3 |
+--------------------+
1 row in set (0.00 sec)
mysql> select length('abc');
+---------------+
| length('abc') |
+---------------+
| 3 |
+---------------+
1 row in set (0.00 sec)
LENGTH(str) 返回字符串字节长度
mysql> select length('我');
+---------------+
| length('我') |
+---------------+
| 3 |
+---------------+
1 row in set (0.00 sec)
mysql> select char_length('我');
+--------------------+
| char_length('我') |
+--------------------+
| 1 |
+--------------------+
1 row in set (0.00 sec)
2.2 CONCAT
CONCAT(s1,s2…) 将传入的字符串进行拼接,需要注意的是任何与NULL进行拼接的字符串返回结果都为NULL
mysql> select concat(1,'a'),concat(null,'a');
+---------------+------------------+
| concat(1,'a') | concat(null,'a') |
+---------------+------------------+
| 1a | NULL |
+---------------+------------------+
1 row in set (0.00 sec)
2.3 INSERT
INSERT(str,x,y,str1) 将str1 插入到str的x位置开始,y的位置结束
mysql> select insert('abc',1,2,'haha123');
+-----------------------------+
| insert('abc',1,2,'haha123') |
+-----------------------------+
| haha123c |
+-----------------------------+
1 row in set (0.00 sec)
2.4 LOWER 与UPPER
LOWER(str)、UPPER(str)函数:将字符串转换成小写或大写:
mysql> select UPPER('abc'),LOWER('ABC');
+--------------+--------------+
| UPPER('abc') | LOWER('ABC') |
+--------------+--------------+
| ABC | abc |
+--------------+--------------+
1 row in set (0.00 sec)
2.5 LEFT 与 RIGHT
LEFT(str,x) 和 RIGHT(str,x) 函数分别返回字符串最左边x个字符或最右边x个字符
mysql> select LEFT('i love china,because i am a chinese',12),RIGHT('i love china,because i am a chinese',15);
+------------------------------------------------+-------------------------------------------------+
| LEFT('i love china,because i am a chinese',12) | RIGHT('i love china,because i am a chinese',15) |
+------------------------------------------------+-------------------------------------------------+
| i love china | i am a chinese |
+------------------------------------------------+-------------------------------------------------+
1 row in set (0.00 sec)
2.6 REPLACE
REPLACE(str,s1,s2) 将str中包含是s1的字符序列替换为s2
mysql> select replace('abc','ab','bb');
+--------------------------+
| replace('abc','ab','bb') |
+--------------------------+
| bbc |
+--------------------------+
1 row in set (0.01 sec)
2.7 TRIM
TRIM(str) 去掉字符串开头、结尾的空格
mysql> select trim(' a bc ');
+----------------+
| trim(' a bc ') |
+----------------+
| a bc |
+----------------+
1 row in set (0.00 sec)
2.8 SUBSTRING
SUBSTRING(str,x,y) 截取字符串str从x位置开始到y结束
mysql> select substring('abcd',1,1);
+-----------------------+
| substring('abcd',1,1) |
+-----------------------+
| a |
+-----------------------+
1 row in set (0.00 sec)
2.9 LOCATE、POSITION、INSTR
LOCATE(s,str)、POSITION(s in str)、INSTR(str,s) 这三个函数作用相同即返回字符串s在str的开始位置,需要注意三个函数之间的参赛顺序
mysql> select locate('a','abc'),position('a' in 'abc'),instr('abc','a');
+-------------------+------------------------+------------------+
| locate('a','abc') | position('a' in 'abc') | instr('abc','a') |
+-------------------+------------------------+------------------+
| 1 | 1 | 1 |
+-------------------+------------------------+------------------+
1 row in set (0.00 sec)
2.10 REVERSE
REVERSE(str) 将字符串序列进行反转
mysql> select REVERSE('abc');
+----------------+
| REVERSE('abc') |
+----------------+
| cba |
+----------------+
1 row in set (0.00 sec)
2.11 FIELD
FIELD(s,s1,s2 …) 返回字符串s在s1、s2 …中第一次出现的位置,如若没有则返回0。
mysql> select FIELD('a','ab','a');
+---------------------+
| FIELD('a','ab','a') |
+---------------------+
| 2 |
+---------------------+
1 row in set (0.00 sec)
2.12 FIND_IN_SET
FIND_IN_SET(s1,s2) 返回字符串s1在字符串s2出现的位置,这一点与FIELD很类似,但是注意参数
mysql> select FIND_IN_SET('a','caba,aa,a');
+------------------------------+
| FIND_IN_SET('a','caba,aa,a') |
+------------------------------+
| 3 |
+------------------------------+
1 row in set (0.00 sec)
下一篇我们将结束MySQL的时间函数。