天天看点

【page】mysql笔记(四)常用函数--单行函数进阶4:常见函数

进阶4:常见函数

概念:类似于Java中的方法,将一组逻辑语句封装在方法体内,对外暴露方法
好处:1、隐藏了实现细节 2、提高了代码的重用性

调用:select 函数名(实参列表)

【from 表】;

特点:

1:叫什么(函数名)

2:干什么(函数功能)

分类:

1:单行函数

如concat,length,ifnull

包括:字符函数,数学函数,日期函数,其他函数,流程控制函数

2:分组函数

(1)功能:做统计使用

常见函数:

一、单行函数

字符函数

length----获取参数值的字节个数

concat----拼接字符串

substr----截取字符

instr-----返回子串第一次出现的索引,如果找不到,返回0

trim

upper-----字符串大写

lower-----字符串小写

lpad------用指定字符实现左填充指定长度

rpad------用指定字符实现右填充指定长度

replace—替换

数学函数

round-----四舍五入,或保留几位小数

ceil------向上取整

floor-----向下取整

truncate–截断

mod-------取余

日期函数

now

curdate—返回当前系统日期,不包括时间

curtime—返回当前系统时间,不包括日期

year

month

monthname–返回英文的月份

day

hour

minute

second

str_to_date

date_format

其他函数
version
datebase
user

流程控制函数
if
case
           

一、字符函数

1.length 获取参数值的字节个数

SELECT LENGTH('joey');
SELECT LENGTH('张沛祺hahaha');
           

2.concat 拼接字符串

SELECT 
	CONCAT(`last_name`,' ',`first_name`) AS 姓名
FROM 
	employees;
           

3.upper,lower

SELECT UPPER('joey');
SELECT LOWER('ROSS');
           

实例:将姓变大写,名变小写,然后拼接

SELECT
	CONCAT(LOWER(`first_name`),' ',UPPER(`last_name`)) AS 姓名
FROM
	employees;
           

4.substr,substring【截取字符】

注意:mysql中索引从1开始

截取从指定索引处后面的所有字符[>=4]

截取从指定索引处指定字符长度的字符[>=1&&<=3]

案例:将名的首字符大写,其他字符小写,然后用_拼接

SELECT 
	CONCAT(UPPER(SUBSTRING(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) AS out_put
FROM 
	employees;
           

5.instr

返回子串第一次出现的索引,如果找不到,返回0

SELECT
	INSTR('杨不悔爱上了殷六侠','殷六侠') AS out_put
FROM
	employees;
           

6.trim

SELECT
	TRIM('   张翠山    ') AS out_put;
           

#--------------------------------------

SELECT 
	TRIM('aa' FROM 'aaaaaaa张翠山aaaa') AS out_put;
	
           

7.lpad,rpad

#用指定字符实现左填充指定长度

SELECT
	LPAD('张',5,'*') AS out_put;
           
#用指定字符实现右填充指定长度
           
SELECT
	RPAD('张',10,'*') AS out_put;
           

8.replace 替换

二、数学函数

1.round—四舍五入

SELECT ROUND(1.2);
SELECT ROUND(1.65,1);#第二个参数是保留几位小数
           

2.ceil—向上取整

返回>=该参数的最大整数

3.floor—向下取整

4.truncate–截断

5.mod—取余

三、日期函数

1.now :返回当前的日期+时间

2.curdate :返回当前系统日期,不包括时间

3.curtime :返回当前系统时间,不包含日期

4.可以获取指定的部分,年、月、日、小时、分钟、秒

SELECT YEAR('2018-9-12');
SELECT MONTHNAME(NOW()) AS 年;#英文月份
SELECT YEAR(`hiredate`) AS 年 FROM employees;
           

5.str_to_date :将合法日期格式的字符转换成指定格式的日期

6.date_format:将日期转换成字符

四、其他函数

1.查看当前版本

2.查看当前数据库

3.查看用户

五、流程控制函数

1.if函数:Java中的if else的效果

SELECT IF(10>5,'da','xiao') AS if函数;
#-----------------------------------------
SELECT 
	IF(`commission_pct`IS NULL,'没奖金,呵呵','有奖金,嘿嘿') AS 备注
FROM
	employees;
           

2.case函数的使用一:Java中的switch case的效果

Java中

switch(变量或表达式){

case 常量:语句1;break;

default:语句n;break;

}

MySQL中

case 要判断的字段或表达式

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

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

when 常量3 then 要显示的值3或(语句3;)

else 要显示的值n或(语句n;)

end

SELECT  
	salary AS 源工资,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;
           

case的使用二:类似于Java中的 多重if

Java中:

if(条件){

语句1;

}else if(条件2){

语句2;

}else{

语句n;

}

MySQL中:

case

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

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

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

else 要显示的值n或(语句n;)

end

SELECT
	CASE
	WHEN salary>20000 THEN 'A'
	WHEN salary>15000 THEN 'B'
	WHEN salary>10000 THEN 'C'
	ELSE 'D'
	END AS 工资级别
FROM 
	employees;