介绍
概念:
类似于java(python)的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:
- 隐藏了实细节;
- 提高代码的重用性
语法:
select 函数名(实参列表) 【from 表】;
调用关注:
- 叫什么(函数名);
- 干什么(函数功能)
分类:
1.单行函数:如concat、length、ifnull等。
2.分组函数:做统计使用,又被称为统计函数、聚合函数、组函数
字符函数
length:查询字符字节串长度,utf-8中汉字为3个字节串,gbk中汉字为2个字节串
SELECT LENGTH(‘join‘); SELECT LENGTH(‘张三丰taijiquan‘);
concat:拼接字符串
SELECT CONCAT(last_name,‘ ‘,first_name) FROM employees;
substr【substring】:截取指定索引,下标从1开始
-- substr(string, start, length) -- 截取从指定索引处后面所有的字符 SELECT SUBSTR(‘李莫愁爱上了陆展元‘,7) out_put; -- 截取从指定索引处指定字符长度的字符 SELECT SUBSTR(‘李莫愁爱上了陆展元‘,1,3) 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; SELECT INSTR(‘下次是哪次‘,‘shi哪次‘) AS out_put;
trim:函数可以移除字符串的首尾信息。最常见的用法为移除字符首尾空格。
SELECT TRIM(‘ 改天是哪天 ‘) AS out_put; -- 移除指定的首尾字符,备注:前面的‘aa’是一个字符,如果后面是‘aaaaa改天是哪天aaaaa‘,截取后‘a改天是哪天a‘ SELECT TRIM(‘a‘ FROM ‘aaaa改天是哪天aaaa‘) AS out_put;
upper:转换成大写
SELECT UPPER(last_name) FROM employees;
lower:转换成小写
SELECT LOWER(last_name) FROM employees; -- 案例:姓大写,名小写 SELECT CONCAT(UPPER(last_name),LOWER(first_name)) as 姓名 FROM employees;
lpad:用指定的字符串实现左填充指定长度,如字符没有指定长度,则会进行截取显示
SELECT LPAD(‘以后是多后‘,10,‘*‘); SELECT LPAD(‘以后是多后‘,2,‘*‘);
rpad:用指定的字符串实现右填充指定长度,如字符没有指定长度,则会进行截取显示
SELECT RPAD(‘以后是多后‘,10,‘*‘); SELECT RPAD(‘以后是多后‘,2,‘*‘);
replace:替换,有多个则替换多个
SELECT REPLACE(‘time will tell‘,‘time‘,‘替换‘) AS out_put;
distinct:去重函数
SELECT DISTINCT commission_pct from employees
ifnull:如果参数为null,则输出指定值,sql为isnull
SELECT IFNULL(commission_pct,1) FROM employees
数学函数
round:四舍五入,默认保留一位小数
SELECT ROUND(1.55); -- 保留两位小数 SELECT ROUND(1.567,2);
ceil:向上取整,返回>=该参数的最小整数
SELECT CEIL(1.02); SELECT CEIL(1.0); SELECT CEIL(-1.02);
floor:向下取整,返回<=改参数的最大整数
SELECT FLOOR(1.02); SELECT FLOOR(1.0); SELECT FLOOR(-1.02);
truncate:截断
SELECT TRUNCATE(10.999999,1);
mod:
/* mod(a,b):a-a/b*b mod(-10,-3): -10 - (-10)/(-3)*(-3) = -1 */ SELECT MOD(10,-3); SELECT 10%-3;
rand:获取随机数,返回0~1之间的小数
select truncate(rand(),1)