字符串函数

 

-- concat(str1,str2,...strn)字符串拼接,将str1,str2,...strn拼接成一个字符串

 

-- 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个长度的字符串

 

 

案例: 要求企业员工的工号,统一为5位数,不足5位数的全部在前面补0

 

create database if not exists bilibili; #创建数据库bilibili use bilibili; #选择bilibili数据库,即可进行下面的代码演示 drop database if exists bilibili; #代码演示结束后删除bilibili数据库。这个小文件全部代码演示完再删 show databases; #查看是否删除完成

 

-- 创建一个emp表格

 

-- 为emp表格的每一个字段添加数据

 

-- 查看表内容

 

-- 注意工号1~9需要补4个0才能达到五位数。工号10~18只需要补3个0就可以达到五位数

 

-- 查看表内容

 

 

字符串函数

 

-- 常见的数值函数如下

 

-- ceil(x) 向上取整

 

-- floor(x) 向下取整

 

-- mod(x,y) 返回x/y的模,注意返回的是余数

 

-- rand() 返回0~1内的随机数

 

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

 

 

案例: 生成一个六位数的随机验证码

 

思路:生成8位随机数向上取整,有可能是六位或7位,截取前六位

 

-- 或者当位数不够时,我们直接采用右填充,位数不够就在末尾填充0,这种写法最精确

 

-- 其实这种写法跟上面那种一样精确。写法最简洁

 

 

日期函数

 

-- 常见的日期函数如下:

-- curdate() 返回当前日期,年月日

 

-- curtime() 返回当前时间,时分秒

 

-- now() 返回当前日期和时间,年月日 时分秒

 

-- year(date) 获取指定date的年份

 

-- month(date) 获取指定date的月份

 

-- day(date) 获取指定date的日期

 

-- date_add(date,interval expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值,interval是间隔的意思

 

-- datediff(date1,date2) 返回起始时间date1 和 结束时间date2之间的天数

 

 

案例: 查询所有员工的入职天数,并根据入职天数倒序排序

 

 

-- 或者使用别名比较容易阅读,as可以省略

 

 

流程函数

 

-- 流程函数是很常用的函数,作用是实现条件筛选,提供语句的效率

-- if(value,t,f) -- 如果value为true,则返回t,否则返回f。value一般是条件表达式,而不能直接写true或false

 

-- ifnull(value1,value2) -- 如果value不为空,返回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默认值 -- 需求: 查询emp表的员工姓名和工作地址,地址如果是北京上海则展示为一线城市,其他地址均展示为二线城市

 

 

案例: 统计班级各个学员的成绩

 

-- 展示的规则例如下

-- 1. >=85,展示优秀 -- 2. >=60,展示及格 -- 3. 否则,展示不及格

 

-- 新建学员成绩表

 

-- 完成案例