内容一:字符串运算函数
?例子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
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |