上期文章
MySQL(二)——SQL
函数:一段可以直接被另一段程序调用的程序或代码
字符串函数
函数 功能 CONCAT(S1,S2,…Sn) 字符串拼接,将S1,S2,…Sn拼接成一个字符串 LOWER(str) 将字符串str全部转为小写 UPPER(str) 将字符串str全部转为大写 LPAD(str, n, pad) 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度 RPAD(str, n, pad) 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度 TRIM(str) 去掉字符串头部和尾部的空格 SUBSTRING(str, start, len) 返回从字符串str从start位置起的len个长度的字符串
SELECT 函数( 参数) ;
select concat( 'hello' , ' world' ) ;
select lower( 'Hello' ) ;
select upper( 'hello' ) ;
select lpad( '05' , 5 , '-' ) ;
select rpad( '05' , 5 , '-' ) ;
select trim( ' hello world ' ) ;
select substring( 'hello world' , 1 , 5 ) ;
update emp set workno = lpad( workno, 5 , '0' ) ;
数值函数
函数 功能 CEIL(x) 向上取整 FLOOR(x) 向下取整 MOD(x, y) 返回x/y的模 RAND() 返回0-1内的随机数 ROUND(x, y) 求参数x的四舍五入的值,保留y位小数
select ceil( 1.1 ) ;
select floor( 1.9 ) ;
select mod ( 6 , 4 ) ;
select rand( ) ;
select round ( 2.345 , 2 ) ;
select lpad( round ( rand( ) * 1000000 , 0 ) , 6 , 0 ) ;
select substring( rand( ) , 3 , 6 ) ;
日期函数
函数 功能 CURDATE() 返回当前日期 CURTIME() 返回当前时间 NOW() 返回当前日期和时间 YEAR(date) 获取指定date的年份 MONTH(date) 获取指定date的月份 DAY(date) 获取指定date的日期 DATE_ADD(date, INTERVAL expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值 DATEDIFF(date1, date2) 返回起始时间date1和结束时间date2之间的天数
select curdate( ) ;
select curtime( ) ;
select now ( ) ;
select year ( now ( ) ) ;
select month ( now ( ) ) ;
select day ( now ( ) ) ;
select date_add( now ( ) , INTERVAL 70 day ) ;
select datediff( '2021-10-01' , '2021-12-01' ) ;
select name, datediff( curdate( ) , entrydate) '入职天数' from emp order by 入职天数 desc ;
流程函数
函数 功能 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默认值
select if ( true , 'ok' , 'error' ) ;
select ifnull( 'ok' , 'default' ) ;
select ifnull( null , 'default' ) ;
select
name,
( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end ) as '工作城市'
from emp;
select
name,
( case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end ) as '数学成绩' ,
( case when english >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end ) as '英语成绩' ,
( case when chinese >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end ) as '语文成绩'
from score;
总结