一、字符串函数
- concat:将2个字符串拼接起来
select concat('Hello' , ' MySQL');
结果为:
Hello MySQL
- lower: 使字符串的字母均变为小写
select lower('Hello');
结果为:
hello
- upper :使字符串的字母均变为大写
select upper('Hello');
结果为:
HELLO
- lpad : 将长度不足5(可以改为其他长度)的字符串左边用"%"(可选择其他字符)补齐
select lpad('01', 5, '%');
结果为:
%%%01
- rpad :将长度不足5(可以选择其他长度)的字符串右边用"%"(可选择其他字符)补齐
select rpad('01', 5, '%');
结果为:
01%%%
- trim :去除字符串头和尾的空格(中间空格不去除)
select trim(' Hello MySQL ');
结果为:
Hello MySQL
- substring(‘a’,b,c) :截取字符串a的第b位到第c位(c>b)
select substring('Hello MySQL',1,5);
结果为:
Hello
二、数值函数
- ceil :向上取整
select ceil(1.1);
结果为:
2
- floor :向下取整
select floor(1.9);
结果为:
1
- mod(a,b) : 得到 a除以b的余数
select mod(7,4);
结果为:
3
- rand :得到0-1之间的随机数
select rand();
结果可以为:
0.704647089079625
- round(a,b) : 将a四舍五入并且保留b位小数
select round(2.344,2);
结果为:
2.34
三、日期函数
- curdate() :显示当前的年月日
select curdate();
比如:
2022-07-28
- curtime() : 显示当前的时间点
select curtime();
比如:
15:26:53(依次为时分秒,24小时制)
- now() : 显示当前的具体时间
select now();
比如:
2022-07-28 15:28:00
- YEAR , MONTH , DAY : 分别显示当前的年、月、日
# 分别显示当前的年、月、日
select YEAR(now());
select MONTH(now());
select DAY(now());
比如今天是2022年7月28日,则结果为:
2022
7
28
- date_add :当前时间往后延一段时间
select date_add(now(), INTERVAL 70 YEAR );
比如上述的例子表示的是当前时间往后延70年,则为:2092-07-28 15:39:30 ;
当然可以以“MONTH"或者"DAY" 为单位对当前时间进行延后。
- datediff(‘a’ , ‘b’) : 时间a比时间b延迟多少(前面的时间减去后面的时间
select datediff('2021-10-01', '2021-12-01');
结果为:
-61
四、流程控制函数
- if(a,b,c)
如果a为真,则返回b; 若a为假,则返回c
select if(false, 'Ok', 'Error');
结果为:
Error
- ifnull(a,b)
如果a不为空值,则返回a;若a为空值,则返回b
select ifnull('Ok','Default');
结果为:
Ok
select ifnull('','Default');
结果为一个空格(空格不为空值)
select ifnull(null,'hello');
结果为:
hello
- case when then else end
例如,一个名为"test"的表格如下:
name | address |
---|---|
小红 | 上海 |
小明 | 海口 |
小辉 | 佛山 |
小慧 | 北京 |
小敏 | 南京 |
要求将上述表格中出现的住址中的北京/上海标注为 ”一线城市“ , 其他城市标注为"二线城市"
select
name as '姓名' ,
( case address when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end ) as '住址'
from test;
结果为:
姓名 | 住址 |
---|---|
小红 | 一线城市 |
小明 | 二线城市 |
小辉 | 二线城市 |
小慧 | 一线城市 |
小敏 | 二线城市 |