JDBC从入门到放弃-09:JDBC的函数

JDBC从入门到放弃

09-JDBC的函数

目录

JDBC从入门到放弃

09-JDBC的函数

字符函数

数学函数

日期函数:

流程控制函数

分组函数


Jdbc的函数属于数据量层面的知识。这里简答介绍一下,常用的SQL函数。

函数:将某些功能封装到一起,对外提供到一个接口(函数名),通过函数调用的方式可以重复的执行函数里的功能代码从而提高我们的代码的复用性.

MySql里自带了很多已经封装好了的函数,可以帮我们实现很多功能,接下来我们就来学习这些现成的函数的用法:

MySql里调用函数和java一样用函数名(),完整的写法:

select 函数名(实参) from 表名

字符函数

  1. length(str):获取参数的字节数

select length('abcd'); // 返回值:4

select length('小白abc'); // 返回值:与字符编码类型有关

show variables like '%char%'; //查看数据可客服端字符集编码

GBK:一个汉字占两个字节;UTF-8:一个汉字是占三个字节.

  1. concat(str1,str2,...):连接字符串

select concat(last_name,'--',first_name) as 姓名 from employees;

  1. upper(str):小写字母变大写; lower(str):大写字母变小写;

select upper('zhonghao');

select lower('XIAOBEI');

案例:查询员工姓和名,把姓大写,名小写,并用&连接起来显示:

select

  1. substr 和 substring

案例:截取字符串,从第4个字符(包含)开始到最后

select substr('目标字符串',4) as out_put; //注意:Mysql中索引值是从1开始的,和java不同,java索引是从0开始的.

案例:截取字符串,从第二个开始接到第三个

select substr('目标字符串',2,1) as out_put; //注意:第一个数字是开始截取的索引值,第二个数数截取的长度

  1. instr('源字符串','子字符串'):

作用返回子字符串子源字符串里的起始索引.

select instr('目标字符串','字符串'); //返回结果3, 如果找不到返回0

  1. trim(' 有空格的字符串 ')

作用是去掉字符串前后的空格,中间空格去不掉

select lenght(trim(' a s '));

扩展用法:去掉前后两端的其他字符:select trim('a' from 'aaaaa字符aaaaa去掉aaaaa');

  1. lpad('目标字符串',10,'填充字符');

 将填充字符填充到目标字符的左边,补足10个

select lpad('哈哈哈',10,'*'); // 如果中间的数字比目标字符长度小,就只截取左边的数字长度字符串.

  1. rpad

与lpad只是填充方向相反,其他一样;

  1. replace('目标字符串','被替换子串','用于替换的新串')

替换

select replace('目标字符串','字符','哈哈');

数学函数

  1. round

四舍五入

select round(1.45);//不管正负数,先将绝对值round,然后加正负号

select round(1.567,2); //表示小数点保留2位

  1. ceil

向上取整

select ceil(-1.3);

  1. floor

向下取整

  1. truncate

截断

select truncate(1.65,1); // 结果保留小数1位:1.6

  1. mod

取余

select mod(10,3); java中的mod一样: mod(a,b)====a-a/b*b(计算机中整数除以整数的结果还是整数),结论被除数是正,结果就是正,被除数是负结果就是负数

日期函数:

  1. now

用户返回当前日期时间

select now();

  1. curdate 返回当前系统日期,没有时间部分
  2. curtime

返回当前系统时间,没有日期部分

  1. 可以单独获取年/月/日

select year(now()); 取得年

select year('2004-1-1') ;

select month(now()); 取得月

select monthname(now()); 取得月名..day hour minute second一样

  1. str_to_date

将日期格式的字符转换层制定格式的日期

str_to_date('2018-1-12','%y-%m-%d');

  1. date_format

将日期换换成字符串,或者理解为格式化日期

date_format(now(),'%y-%m-%d');

案例:查询入职日期是1992-4-3的员工信息:

select * from employees where hiredate='1992-4-3'; //能找到

select * from employees where hiredate=STR_TO_DATE('1992 4 3','%Y %m %d');

 

系统函数

这个函数都用的很少

  1. select version(); //查看mysql版本
  2. select datebase(); //查看当前使用的数据库
  3. select user(); //查看当前用户

流程控制函数

  1. if函数

select if('10>1','大','小');

  1. case函数

case 要判断的子段或表达式

when case的结果是常量1 then 要显示的值1(或语句1;)

when case的结果是常量2 then 要显示的值2(或语句2;)

......

else case的结果都不前面的时候显示;

end 结束

案例:员工表中, 部门号是30,显示的工资是1.1倍

部门号是40,显示的工资是1.2倍

其他显示原工资

SELECT salary AS 原工资,department_id,

CASE department_id

WHEN 30 THEN salary*1.1

WHEN 50 THEN salary*1.2

ELSE salary

END AS 新工资

FROM employees;

  1. 多重if

case

when 条件1 then 要显示的值1(或语句1;)

when 条件2 then 要显示的值2(或语句2;)

......

else 前面的条件都不符合时候显示;

end 结束

 

SELECT salary,

CASE

WHEN salary>20000 THEN 'A级工资'

WHEN salary>10000 THEN 'B级工资'

ELSE 'C级工资'

END AS 工资等级

分组函数

分组函数和前面讲的函数不同在于,前面的对内容本身的处理,而分组函数的主要功能是统计.

主要讲的分组函数:sum , avg , max , min , count

select sum(salary) as 单月所发总工资 from employees;

select avg(salary) as 单月所发平均工资 from employees;

select max(salary) as 单月所发最多工资 from employees;

select min(salary) as 单月所发最少工资 from employees;

select count(*) as 总员工人数 from employees; //count(*) 用来统计行数

分组函数的共同特点:会忽略null

分组函数还可以和一个关键字和用: distinct

select count(distinct salary) from employees;

你可能感兴趣的:(JDBC)