概念:类似于java中的方法,将实现某个功能的一系列逻辑语句封装到了方法中,对外暴露一个公开的名字,当要用这些逻辑语句时,只需要写方法名调用即可
好处:
隐藏了实现细节
提高了代码的重用性
调用:
select 函数名(实参列表) 【from 表】(备注:当调用的函数中需要表中的字段,则加上from 表)
分类:
单行函数(备注:比如concat、length、ifnull等)
分组函数(备注:功能是做统计使用的,又称为统计函数、聚合函数、组函数)
length():获取参数值的字节个数
select length('john'); # 结果为4
select length('你好'); # 若mysql客户端的字符集为utf8则,1个中文字符 = 3个字节,gbk中 1个中文字符 = 2个字节
备注:查看字符集命令 show variables like '%char%';
concat():拼接字符
select concat(`last_name`,'_',`first_name`) from employees;
upper、lower:大小写转换
select upper('hello');
select lower('HelLo');
将姓大写,名小写,然后拼接
SELECT CONCAT(UPPER(`last_name`),LOWER(`first_name`)) FROM employees;
(备注:由上可以看出函数可以嵌套函数,即一个函数的返回值可以当作另一个函数的参数)
substr、substring:截取字符串
select substr('李莫愁爱上了陆湛远',7) as "out put"; # 结果:陆湛远
(注意:sql语句中索引一般从1开始)
(备注:两个参数为截取从指定索引处后面的所有字符)
SELECT SUBSTR('李莫愁爱上了陆湛远',1,3) AS "out put"; # 结果:李莫愁
(备注:三个参数为截取指定索引处指定字符长度的字符)
姓名中首字符大写,其他字符小写然后用_拼接,显示
select concat(upper(substr(last_name,1,1)),'_',lower(substr(last_name,2))) as "out put" from employees;
instr:返回子串第一次出现的索引,如果找不到则返回0
SELECT INSTR('杨不悔爱上了殷六狭','殷六狭') AS `out_put`; # 结果:7
select instr('杨不悔爱上了殷六狭','殷八狭') as `out_put`; # 结果:0
select instr('杨不悔殷六狭爱上了殷六狭','殷六狭') as `out_put`; # 结果:4
trim:去掉字符前后的空格
SELECT TRIM(' 张翠山 ') AS "out put";
select trim('a' from 'aaaaaaa张aa翠山aa') as out_put; # 去掉字符前后的a
lpad:用指定字符实现左填充指定长度
select lpad('殷素素',10,'*') as out_put; # 结果:*******殷素素
SELECT LPAD('殷素素',2,'*') AS out_put; # 结果:殷素
rpad:用指定字符实现右填充指定长度
select rpad('殷素素',10,'*') as out_put; # 结果:殷素素*******
replace:替换
select replace('张无忌爱上了周芷若','周芷若','赵敏');
round:四舍五入
SELECT ROUND(1.65); # 结果:2
select round(-1.65); # 结果:-2
select round(1.567,2); # 结果:1.57(备注:小数点后保留2位)
ceil:向上取整(备注:返回>=该参数的最小整数)
select ceil(1.002); # 结果:2
select ceil(1.00); # 结果:1
select ceil(-1.002); # 结果:-1
floor:向下取整(备注:返回<=该参数的最大整数)
select floor(1.002); # 结果:1
truncate 截断(备注:小数点后保留几位)
SELECT TRUNCATE(1.65,2); # 结果:1.65
mod:取余
select mod(10,3); # 结果:1
rand:获取随机数,返回0-1之间的小数