irpas技术客

mysql基础(4)_Vlepro

irpas 5108

内容一:字符串运算函数

?例子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.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #mysql基础4 #MySQL #Mysql基础 #if和case #控制流函数