函数

202024

12:10

概念:类似于Java的方法,将一组逻辑代码语句而封装在方法体中,对外暴露方法名

好处:1、隐藏了实现细节 2、提高了代码的重用性

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

特点: 1、叫什么(函数名)

2、干什么(函数功能)

分类:

1、单行函数

如 concat、length、ifnull等

2、分类函数

#一、字符函数

   

#1.length 获取参数值的字节个数(汉字占用三个字节)

SELECT LENGTH('john');

SELECT LENGTH('张三丰hahaha');

   

系统中各常量字符编码格式

SHOW VARIABLES LIKE '%char%';

   

结果:

character_set_client        

utf8        

character_set_connection        

utf8        

character_set_database        

gb2312        

character_set_filesystem        

binary        

character_set_results        

utf8        

character_set_server        

utf8mb4        

character_set_system        

utf8        

character_sets_dir        

F:\MySQL\mysql-8.0.18

   

   

#2.concat 拼接字符串

   

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

   

#3.upperlower

SELECT UPPER('john');

SELECT LOWER('joHn');

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

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

   

#4.substrsubstring

注意:索引从1开始

#截取从指定索引处后面所有字符

SELECT SUBSTR('李莫愁爱上了陆展元',7) out_put;

   

#截取从指定索引处指定字符长度的字符

SELECT SUBSTR('李莫愁爱上了陆展元',1,3) out_put;

   

   

#案例:姓名中首字符大写,其他字符小写然后用_拼接,显示出来

   

SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2))) out_put

FROM employees;

   

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

   

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

   

#6.trim 去除字符串中的空格或者是指定字符(串)

   

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

   

SELECT TRIM('aa' FROM 'aaaaaaaaaaaaaaaaaaaaa翠山aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') AS out_put;

   

#7.lpad 用指定的字符实现左填充指定长度

   

SELECT LPAD('殷素素',2,'*') AS out_put;

   

#8.rpad 用指定的字符实现右填充指定长度

   

SELECT RPAD('殷素素',12,'ab') AS out_put;

   

   

#9.replace 替换

   

SELECT REPLACE('周芷若周芷若周芷若周芷若张无忌爱上了周芷若','周芷若','赵敏') AS out_put;

   

二、数字函数

#1、round() 四舍五入

   

select round(1.65);

select round(1.6665,3);

   

#2ceil 向上取整数 返回>=参数的整数

   

select ceil(1,65);

select ceil(-1.0);

   

#3floor 向下取整数返回<=参数的整数

   

select floor(1.65);

   

#4、truncate 截断

   

#5mod 取余

   

三、时间函数

#1、返回现在系统时间

   

select now();

   

#2、查询现在系统时间的年、月、日。

select year(now()) ;

select yearname(now()) 年;

   

select month(now()) ;

select monthname(now()) ;

   

select day(now()) ;

select dayname(now ()) ;

   

#3、str-to-date 将字符通过指定的格式转换为日期

   

   

   

select str_to_date('1992-3-2','%Y-%c-%d') as out_put;

   

select * from employees where hiredate = str_to_date('1992 4-3','%Y %c-%d');

   

   

   

   

#4date_format(),将日期转换为字符(与上面相反)

   

4、流程控制函数

#1if函数 if else 效果

   

select if(16>10,'xixi','hehe');

结果:

xixi

   

select last_name,commission_pct,if(commission_pct is null,'没工资,完了','有工资嘻嘻') 备注 from employees;

   

   

   

#2、case函数 ( switch效果)

   

格式:

case 条件或者常量

when 常量1 then 要执行的语句

when 常量2 then 要执行的语句

when 常量3 then 要执行的语句

end

   

   

select case 50

when 10 then 'good'

when 50 then 'sad'

end

   

#3、case 函数使用2(多重if效果)

   

格式:

case

when 条件1 then 要显示的值或者语句1

when 条件2 then 要显示的值或者语句2

when 条件3 then 要显示的值或者语句3

else 要显示的值或语句n

end

   

select concat(last_name,' ',first_name) as name,salary,

case

when salary>20000 then 'A'

when salary>15000 then 'B'

when salary>10000 then 'C'

else 'D'

end as 工资级别

from employees

order by salary desc;

   

   

  

posted @ 2020-04-27 08:14  伊芙利特  阅读(149)  评论(0编辑  收藏  举报