MySQL基础(三)-函数

函数是指一段可以调用的的程序或代码

函数

  • 字符串函数

  • 数值函数

  • 日期函数

  • 流程函数

字符串函数

函数

功能

CONCAT(s1, s2, …, sn)

字符串拼接,将s1, s2, …, sn拼接成一个字符串

LOWER(str)

将字符串全部转为小写

UPPER(str)

将字符串全部转为大写

LPAD(str, n, pad)

左填充,用字符串pad对str的左边进行填充,达到n个字符串长度

RPAD(str, n, pad)

右填充,用字符串pad对str的右边进行填充,达到n个字符串长度

TRIM(str)

去掉字符串头部和尾部的空格

SUBSTRING(str, start, len)

返回从字符串str从start位置起的len个长度的字符串

REPLACE(column, source, replace)

替换字符串

例:

mysql> select concat ('hellow','mysql'); 
+---------------------------+
| concat ('hellow','mysql') |
+---------------------------+
| hellowmysql               |
+---------------------------+
1 row in set (0.02 sec)

mysql> select lower ('Hellow');
+------------------+
| lower ('Hellow') |
+------------------+
| hellow           |
+------------------+
1 row in set (0.04 sec)

mysql> select upper('Hellow');
+-----------------+
| upper('Hellow') |
+-----------------+
| HELLOW          |
+-----------------+
1 row in set (0.03 sec)

mysql> select lpad('01',5,'-');
+------------------+
| lpad('01',5,'-') |
+------------------+
| ---01            |
+------------------+
1 row in set (0.01 sec)

mysql> select rpad('01',5,'-');
+------------------+
| rpad('01',5,'-') |
+------------------+
| 01---            |
+------------------+
1 row in set (0.03 sec)

mysql> select trim(' Hellow MySQL ');
+------------------------+
| trim(' Hellow MySQL ') |
+------------------------+
| Hellow MySQL           |
+------------------------+
1 row in set (0.03 sec)

mysql> select substring('Hellow MySQL',1,5);
+-------------------------------+
| substring('Hellow MySQL',1,5) |
+-------------------------------+
| Hello                         |
+-------------------------------+
1 row in set (0.04 sec)

练习:由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如:1号员工的工号应该为00001。

update class set id=lpad(id,5,'0');

数字函数

函数

功能

CEIL(x)

向上取整

FLOOR(x)

向下取整

MOD(x, y)

返回x/y的模

RAND()

返回0~1内的随机数

ROUND(x, y)

求参数x的四舍五入值,保留y位小数

mysql> select ceil(1.1);
+-----------+
| ceil(1.1) |
+-----------+
|         2 |
+-----------+
1 row in set (0.05 sec)

mysql> select floor(1.1);
+------------+
| floor(1.1) |
+------------+
|          1 |
+------------+
1 row in set (0.02 sec)

mysql> select mod(3,4);
+----------+
| mod(3,4) |
+----------+
|        3 |
+----------+
1 row in set (0.05 sec)

mysql> select rand();
+---------------------+
| rand()              |
+---------------------+
| 0.03044703978155464 |
+---------------------+
1 row in set (0.02 sec)

mysql> select round(2.34,2);
+---------------+
| round(2.34,2) |
+---------------+
| 2.34          |
+---------------+
1 row in set (0.06 sec)

练习:通过数据库的函数生成一个六位的随机验证码

mysql> select lpad(round(rand()*1000000,0),6,'0');
+-------------------------------------+
| lpad(round(rand()*1000000,0),6,'0') |
+-------------------------------------+
| 089983                              |
+-------------------------------------+
1 row in set (0.04 sec)

日期函数

函数

功能

CURDATE()

返回当前日期

CURTIME()

返回当前时间

NOW()

返回当前日期和时间

YEAR(date)

获取指定date的年份

MONTH(date)

获取指定date的月份

DAY(date)

获取指定date的日期

DATE_ADD(date, INTERVAL expr type)

返回一个日期/时间值加上一个时间间隔expr后的时间值

DATEDIFF(date1, date2)

返回起始时间date1和结束时间date2之间的天数

流程函数

函数

功能

IF(value, t, f)

如果value为true,则返回t,否则返回f

IFNULL(value1, value2)

如果value1不为空,返回value1,否则返回value2

CASE WHEN [ val1 ] THEN [ res1 ] … ELSE [ default ] END

如果val1为true,返回res1,… 否则返回default默认值

CASE [ expr ] WHEN [ val1 ] THEN [ res1 ] … ELSE [ default ] END

如果expr的值等于val1,返回res1,… 否则返回default默认值

mysql> select if(false,'OK','Error');
+------------------------+
| if(false,'OK','Error') |
+------------------------+
| Error                  |
+------------------------+
1 row in set (0.04 sec)

mysql> select ifnull('OK','Default');
+------------------------+
| ifnull('OK','Default') |
+------------------------+
| OK                     |
+------------------------+
1 row in set (0.04 sec)

mysql> select ifnull('','Default');
+----------------------+
| ifnull('','Default') |
+----------------------+
|                      |
+----------------------+
1 row in set (0.03 sec)

mysql> select ifnull(null,'Default');
+------------------------+
| ifnull(null,'Default') |
+------------------------+
| Default                |
+------------------------+
1 row in set (0.02 sec)
select
    name,
    (case when age > 30 then '中年' else '青年' end)
from employee;
select
    name,
    (case workaddress when '北京市' then '一线城市' when '上海市' then '一线城市' else '二线城市' end) as '工作地址'
from employee;

猜你喜欢

转载自blog.csdn.net/m0_60322614/article/details/128816303
今日推荐