在Mysql里面count,max,sum,avg,这些都是一些经常用到的函数,但是除了这些以外,今天我们来了解一些别的函数。
字符串类型函数
1.Concat函数:
select CONCAT(“aaa”,”bbb”,”ccc”) as finalName;
运行的结果如下:
这个函数的作用在于,将几个字符串链接在一起,然后将其拼接显示出来。
2.Insert函数:
select INSERT(“teststr”,5,7,” this is a test”) as finalName
这个函数的作用在于,将字符串teststr里面的第5-7位的内容给替换掉,然后将其拼接显示出来。
3.Upper函数
select UPPER(classroom) from unit;
经过测试,这个函数对于中文字符好像无效果。
4.Lower函数
select LOWER(classroom) from unit;
该函数主要用于将字符变换为小写内容
5.Repeat函数
select REPEAT(‘mysql ‘,3)
主要作用是重复某个字符串n次
6.Strcmp函数
select STRCMP(‘a’,’b’) as finalName
比较字符串的大小
7.Trim函数
select TRIM(” hah ha “) as finalName
只会将字符串左右两边的空格给清空
数字函数
1.CEIL函数
返回大于(x)里面的x值的最小整数
select CEIL(-0.8) , CEIL(0.8)
2.FLOOR(x)函数
返回小于 x 的最大整数,和 CEIL 的用法刚好
select FLOOR(-0.8) , FLOOR(0.8)
3.MOD(x,y)函数
返回 x/y 的模。
select MOD(15,12)
4.RAND()函数:
返回 0 到 100内的随机
select RAND()*100
利用此函数可以取任意指定范围内的随机数,比如需要产生 0~100 内的任意随机整数,可
以操作如下:
日期函数
关于日期函数,我觉得这个挺实用的:
1. CURDATE() 返回年月日
select CURDATE()
2.CURTIME()
返回时分秒
select CURTIME()
3.UNIX_TIMESTAMP()
返回时间戳
select UNIX_TIMESTAMP()
4.YEAR
返回年份:
select YEAR(‘2008-12-05’)
5.MONTH
返回月份
select MONTH(‘2008-12-05’)
当然光是这样做一些简单的练习是往往不够的,我们还需要结合一些实际的场景来进行深入认识:
例如说:
查询出距离今天30天以后的日期:
select now() current, DATE_ADD(NOW(),INTERVAL 31 DAY) after_30_daye, DATE_ADD(NOW(),INTERVAL '1_3' YEAR_MONTH) after_oneyear_month 复制代码
距离今天1年3个月以后的日期:
select CURRENT_DATE() current ,DATE_ADD(CURRENT_DATE(),INTERVAL 30 day) after_30_Days, DATE_ADD(CURRENT_DATE(),INTERVAL 60 DAY) after_60_days 复制代码
查询出距离某一天还有多少天日期:
select DATEDIFF(‘2018-8-29’ ,NOW())
流程函数:
这类型的函数主要是用于在sql语句里面做较为复杂的逻辑处理的时候所运用的,它对于sql的效率方面能够有所提高:
我们还是结合一个场景来进行案例说明会比较好:
下面的例子中模拟了对职员薪水进行分类,这里首先创建并初始化一个职员薪水表:
create table salary (userid int,salary decimal(9,2) 复制代码
然后插入相关数据:
insert into salary values(1,1000),(2,2000), (3,3000),(4,4000),(5,5000), (1,null); 复制代码
1.if函数
select if(salary>2000,'high','low') from salary 复制代码
用户可以使用这类函数在一个 SQL 语句中实现条件选择,这样做能够提高语句的效率:
2.ifnull函数
通过使用IFNULL函数,可以让一些不能参加运算的null值,变为自己希望的值
select IFNULL(level,'0') from salary 复制代码
结果如图:
3.case函数
对于比较复杂的条件操作里面,我们可能会要写很多个if语句,那么这个时候不妨可以试试通过一些case函数来进行过滤判断,例如说常规常见的案例,对于员工的薪水等级进行划分
SELECT CASE WHEN salary.salary<=1000 THEN 'low' WHEN salary.salary>=2000 AND salary.salary<=5000 THEN 'mid' ELSE 'high' END FROM salary;