mysql基础(4)

本文详细介绍了MySQL中的字符串运算函数,如REPLACE和CONCAT,并重点讲解了控制流函数IF、IFNULL、NULLIF以及CASE WHEN的用法,包括在不同场景下的应用和性能考虑。通过实例展示了如何根据条件显示不同结果,如考试分数判断及格、不及格,以及如何处理NULL值。

内容一:字符串运算函数

例子1 字符串替换—replace函数

把查询id那一列 E开头数据 变成jw开头数据

select id,REPLACE(id,“E”,“jw”) as “员工编号” from jw03_sale;

例子2: 字符串合并 将两列数据可以合并显示

select concat(“陈”,“冠希”)

将员工编号+ 姓名+a商品销量一起显示

select CONCAT(id,name,sales_a) from jw03_sale;

select CONCAT_WS(“–”,id,name,sales_a) as “个人销量” from jw03_sale;

内容二: 控制流函数(重点)

需求: 根据不同的数据—显示出不同的结果

根据考试分数 >=60 显示及格 否则 显示不及格

解决方案:if() 函数 理解 ifNULL函数 NULLif函数 2.Case when 函数

If函数

格式1:===》支持嵌套

if(条件,满足条件值,不满足条件的值)

条件 假 0 NULL FASLE 其它 TRue

if函数格式

select if(70>=60,“及格”,“不及格”)

例子 if嵌套 先判断是否及格 ,然后再判断是否优秀

select if(85>=60,if(85>=80,“优秀”,“良好”),“不及格”)

应用1: 给表格增加一列 显示学生是否及格

select id,score,if(score>=60,“及格”,“不及格”) as score_result

from jw04_stu8;

应用2: 给表格增加一列 显示学生是否及格 小于80分==》良好,大于等于80 优秀

select id,score,if(score>=60,if(score<80,“良好”,“优秀”),“不及格”) as score_result

from jw04_stu8;

if函数 外层到内层进行解析即可

ifNULL函数 NULLif函数

ifNULL(参数1,参数2)

含义 如果参数1 不为空则返回参数1 否则 则返回参数2

NULLif(参数1,参数2)

含义:如果 参数1等于参数2 返回NULL 否则返回 参数1

例子 查询worker表

根据 岗位类型 type=“A” 数据分析岗位

其它类型 非数据分析岗位

增加1列 没有工资的 工资显示为0

增加1列 没有工资的 工资显示为NULL

select name,

if(type=‘A’,“数据分析岗”,“非数据岗”) as jwtype,

IFNULL(salary,0) as ‘无工资为0’,

NULLIF(salary,null) as ‘无工资为Null’

from worker;

需求: 在sql if 不建议嵌套太深(不要3层)==》慢查询

解决: 使用 case …when 解决

格式一:(简单写法)

Case 字段名字

When 条件1 then 满足条件1结果

When 条件2 then 满足条件2结果

When 条件3 then 满足条件3结果

Else 不满足返回默认值

End

注意: 条件具体的值,只适合相等条件判断,不能进行比较运算!!!

格式二:(搜索写法 解决格式1 问题 可以做比较运算)

Case (啥也没有)

When 条件1 then 满足条件1结果

When 条件2 then 满足条件2结果

When 条件3 then 满足条件3结果

Else 不满足返回默认值

End

说明: 这里的条件可以进行比较运算的

例子 1.增加一列 根据班级 结果 显示不同班级别名(幼儿园)

select id,class ,

(

case class

when “一班” then “向日葵班”

when “二班” then “玫瑰班”

when “三班” then “小鸡班”

else “老鹰班” end

) as “班级别名”

from jw04_stu8;

例子2.小于60分 “不及格” 小于80分 良好 其它情况优秀

select

id,score,

(

case

when score <60 then “不及格”

when score <80 then “良好”

else “优秀”

end

) “分数等级”

from jw04_stu8;

补充说明 条件between and 关键字支持的

小结: if和case

If 简单 不建议嵌套 建议推荐使用case

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值