SQL语句之函数查询–SQL常用函数
一、字符函数
1.length 获取参数值的字节个数
select length('john');
select length('张三丰hahahah');
2.concat拼接多个字段
select
concat(last_name,'_',first_name) as 姓名
from
employees;
目的:拼接last_name和first_name字段,中间用下划线连接
3.upper将字符转为大写
select upper('john');
4.lower将字符转为小写
select lower('joHn');
综合案例
select
concat(upper(last_name),lower(first_name)) as 姓名
from employees
目的:从employees表中将last_name字段变为大写,将first_name变为小写,然后进行拼接,最后取别名为“姓名”
5.substr获取字段子串
5.1从指定索引处获取字符
select substr('李莫愁爱上陆湛远',7) as out_put;
目的:得到字符串的第7位直到最后(索引从1开始)
5.2从指定索引处获取字符到指定截至位置
select substr('李莫愁爱上陆湛远',1,3) as out_put;
目的:得到字符串的第1位直到第3位(索引从1开始)
综合案例:
select
concat(substr(last_name,1,1),'_',lower(substr(last_name,2))) as out_put
from
employees;
目的:最终就是拼接两个字段,这两个字段分别是last_name的第一个字符,和last_name第2个字母往后的字符,然后变为小写,其中拼接时中间用下划线连接。
6.instr返回子串第一次出现的索引
select instr('这是一个测试数据集',‘一个’) as out_put;返回;
7. trim,去除首尾空格或者是指定字符
select length(trim(' 张翠山 ')) as out_put;
目的:除去两边空格
select trim('a' from 'aaaaaaaaaaaa张aaaaaaaaaa翠山aaaaaaaaaaaa');
目的:除去张aaaaaaaaaa翠山两边的a,中间的不会去掉
8.lpad,rpad用指定字符实现左右填充
select lpad('张翠山',2,'*') as out__put;
目的:向左补2个新号
二、字符函数
1.round四舍五入
select round(-1.55);
2.ceil向上取整
select ceil(-1.02);
3.floor向下取整
select floor(-9.99);
4.truncate截断
select truncate(1.624562,1);
目的:第一个位数后都不要了
5.mod取余
slect mod(10,-3);
二、流程控制函数
1. if 、if else
select if(10<5,'大','小‘);
目的:条件满足返回第一个,不满足返回第二个
2.case
第一种用法,when后具体值
select
salary 原始工资 ,
department_id
case
department_id
when 30 then salary*1.1
when 40 then salary*1.2
when 50 then salary*1.3
else salary
end as 新工资
from
employees;
目的:查询employees中,department_id为30的,salary乘以1.1倍,40的salary乘以1.2倍,50的salary乘以1.3倍.,最后将salary重命名为 ”新工资“
第二种用法,when后是表达式
select
salary
case
when salary>20000 then 'A'
when salary>15000 then 'B'
when salary>10000 then 'C'
else 'D'
end as 工资级别
from employees;
目的:从employees中,查出工资在20000以上的定为A,15000为B等
三、分组函数
函数名 | 函数功能 |
---|---|
sum | 求和 |
avg | 求平均 |
max | 求最大值 |
min | 求最小值 |
count | 个数统计 |
例:
select sum(salary) from employees;