MySQL流程处理函数

流程函数也是一类很常见的一类函数,可以根据不同的条件,执行不同的处理流程,可以在sql语句中实现筛选,从而提高语句效率。

函数

用法

IFNULL(value,value1,value2)

如果value的值为TRUE,返回value1,否则返回value2

IF NULL (value1,value2)

如果value1不为NULL,返回value1,否 则返回value2

CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 .... [ELSE resultn] END

如果val1为true,返回res1,...否则返回default默认值

CASE[expr] WHEN [val1] THEN[res1] ... ELSE[default] END

如果expr的值等于val1,返回res1,..否则返default默认值

# IF (VALUE,VALUE1,VALUE2)
SELECT last_name,salary,IF(salary >= 6000,'高工资','低工资') "details"
FROM employees; 

如果查询的员工的工资大于等于 6000 就会返回高工资,反而不超过6000 属于 低工资

 # IF  commission_pct 不为空(IS not null) 返回自身 commission 如果为空则返回0.
SELECT last_name,commission_pct,IF(commission_pct IS NOT NULL,commission_pct,0)"details"
FROM employees;

IF 字(段 ISNULL, 字段本身,0 )

 # IFNULL (VALUE1,VALUE2) 如果为空(NULL) 返回value2,不为空返回value1


SELECT last_name,commission_pct,IFNULL(commission_pct,0)"details"
FROM employees;

 

#  CASE WHEN ... THEN ... WHEN ... THEN ... ELSE ...END


SELECT last_name,salary,CASE WHEN salary >= 15000 THEN '高级工程师'
                             WHEN salary >= 12000 THEN '项目处理专家'
                             WHEN salary >= 8000 THEN '程序员'
                             ELSE  '业务经理' END
FROM employees; 

什么意思呢? 查询员工姓名 和工资,如果工资大于15000它的职称为‘高级工程师’

它的工资小于15000大于12000元 职位为‘项目处理专家’

......

.....

如果都不满足,那他的职位只能是 ‘业务经理’

题目:
查询部门号为 10,20,30 的员工信息,
如果部门号为10,则打印其工资的1.1倍,20 号部门,则打印其工资的1.2倍,
30号部门,打印其工资的 1.3倍数,其他部门,打印其工资的1.4倍数 。


SELECT employee_id,last_name,department_id,salary,CASE department_id WHEN 10 THEN salary * 1.1
                                                                      WHEN 20 THEN salary * 1.2
                                                                      WHEN 30 THEN salary * 1.3
                                                                      ELSE salary * 1.4 END AS "details"
 FROM`employees` 

如果exper (department_id) = value1(10)返回 THEN(执行)salary * 1.1,其它如department_id = 20 与  department_id = 10雷同

总结:

还有一些其它函数? 大家先看我先给大家献上,哪里不懂就实操,还是不懂就问csdn 

#加密与解密的函数
SELECT MD5('mysql') ,SHA('mysql') FROM DUAL;
#benchmark(n,expr) 将表达式expr重复执行n 次。用于测试MYSQL处理expr表达式所耗费的时间
SELECT BENCHMARK(1000000000,MD5('0000'))

#convert(value using char_code) 将value 所使用的字符编码修改为char_code
SELECT CHARSET("csdn"),CHARSET(CONVERT("csdn" USING "utf8mb4"))
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值