MySQL语句中的单行处理函数

单行处理函数

所用到的表
在这里插入图片描述

特点

单行处理函数/数据处理函数的特点:一个输入对应一个输出。和单行处理函数相对应的是多行处理函数(多行处理函数的特点是多个输入对应一个输出)

常见的单行处理函数

lower转换小写
upper转换大写
substr取子串(substr(被截取的字符串,起始下标,截取的长度))
length取长度
trim去空格
str_to_date将字符串转换成日期
date_format格式化日期
format设置千分位
round四舍五入
rand()生成随机数
ifnull可以将null转换成一个具体值
concat字符串拼接
case…when…then…when…then…else…end当什么时候怎么做

lower

lower,转换小写,upper效果与其相反
查询员工姓名并将其转为小写

select lower(ename) from emp;

在这里插入图片描述

substr

substr 取子串(substr(被截取的字符串,起始下标,截取的长度))
查询员工的姓名但只截取其姓名的第一位进行显示
当我们使用下标从0开始时,所截去的字符串为空,说明在数据库中,起始的下标地址为1

select substr(ename,0,1) as ename from emp;
select substr(ename,1,1) as ename from emp;

在这里插入图片描述
在这里插入图片描述
进行查询员工名字第一个字母是’A’的

第一种方式:
    select ename from emp where ename like 'A%';
第二种方式:
    select ename from emp where substr(ename,1,1)='A';

在这里插入图片描述

length

length 取长度
查询员工姓名并使用length函数取其长度

select length(ename) as ename from emp;

在这里插入图片描述

concat

concat 字符串拼接
查询员工编号及姓名并将其拼接到一起,组成一个字段

select concat(empno,ename) as result from emp;

在这里插入图片描述

使用lower、length、concat结合将名字的首字母变小写

select concat(lower(substr(ename,1,1)),substr(ename,2,length(ename)-1)) as result from emp;

在这里插入图片描述

trim

trim 去除字符串前后空白

select * from emp where ename='  king ';            查不出数据
select * from emp where ename=trim('  king ');    去除前后空格后可以查出数据

在这里插入图片描述

str_to_date

str_to_date:将字符串varchar类型转换为date类型
创建一个表,其中设置birth属性,其类型为date日期类型

create table t_user(
    id int,
    name varchar(32),
    birth date
);

在这里插入图片描述
向数据库中插入数据
当我们严格按照日期的格式去书写时,mysql会自动做类型转换,可以插入成功

insert into t_user(id,name,birth) values(1,'张三','1999-05-03');    成功
insert into t_user(id,name,birth) values(2,'李四','03-05-1999');    失败

在这里插入图片描述
在这里插入图片描述
要想将’03-05-1999’作为日期类型插入数据库,需要使用到str_to_date()函数,其语法格式为
str_to_date(‘字符串日期’,‘日期格式’)

mysql的日期格式:
	    %Y    年
	    %m    月
	    %d    日
	    %h    时
	    %i    分
	    %s    秒
insert into t_user(id,name,birth) values(2,'李四',str_to_date('03-05-1999','%d-%m-%Y'));

在这里插入图片描述

date_format

date_format:将date类型转换为具有一定格式的varchar字符串类型
当我们成功将date数据插入到数据库中后,想要将其取出查看并按照一定的格式进行展示,需要使用到date_format()函数,这个函数可以将日期类型转换为特定格式的字符串。

select id,name,date_format(birth,'%m/%d/%Y') as birth from t_user;

在这里插入图片描述
当我们直接取日期,不使用date_format函数进行格式化时,MySQL也会自动将其格式化为’%Y-%m-%d’格式

select id,name,birth from t_user;

在这里插入图片描述

format

format 设置千分位

select ename,format(sal,'$999,999') from emp;

在这里插入图片描述

小知识

当我们在select后面跟字面量或字面值时,有几行数据生成几行

select 'acb' as bieming from emp;
select 1000 as biming from emp;

在这里插入图片描述
在这里插入图片描述
select可以跟某个表的字段名(等同于变量),也可以跟字面量/字面值(数据)。

round

round (进行四舍五入的数字,要保留的小数的位数)

select round(1236.567,0) as result from emp;

在这里插入图片描述

select round(1236.567,1) as result from emp;
select round(1236.567,2) as result from emp;

在这里插入图片描述
当要保留的小数的位数为-1、-2时

select round(1236.567,-1) as result from emp;
select round(1236.567,-2) as result from emp;

在这里插入图片描述

rand()

rand() 生成随机数

select rand() from emp;

在这里插入图片描述
生成100以内的随机数

select round(rand()*100,0) from emp;

在这里插入图片描述

ifnull

ifnull 将null转换为具体的值
在数据库中,有null参与的数学运算结果都为null
计算员工的薪资加津贴,津贴为null的员工的结果都为null
在这里插入图片描述
ifnull函数的用法:ifnull(数据,被当作的值),如果数据为null时,自动将其转换为我们所设置的

select ename,(sal+ifnumm(comm,0)) from emp;

在这里插入图片描述

case…when…then…when…then…else…end

需求:当员工的工作岗位为MANAGER的时候,工资上调10%,工资岗位是SALESMAN的时候,工资上调50%

select ename,job,sal as oldSal,(case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.5 else sal end) as newSal from emp;

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值