MySQL中流程控制相关的函数

MySQL中流程控制相关的函数:

  1. IF(value1,t,f) 如果value满足条件,则返回t,否则返回f
    参考代码如下:
SELECT NAME,age,IF(age>60,'前辈','年轻人') "details"
FROM t_emp;

以上代码编译结果如下:
在这里插入图片描述
------------------------------(分割线)----------------------------

  1. IFNULL(value1,value2) 如果value1不为空,返回value1,否则返回value2
    参考代码如下:
SELECT employee_id,last_name,commission_pct,
IF(commission_pct IS NOT NULL,commission_pct,0)
FROM emlpoyees;
SELECT employee_id,last_name,commission_pct,IFNULL(commission_pct,0)
FROM emlpoyees;

以上两种方法(使用IF()或者使用IFNULL())是等效的。

------------------------------(分割线)----------------------------

  1. CASE WHEN 条件1 THEN result1 WHEN 条件2 THEN result2 ....[ELSE resultn] END
    相当于java中的if-else if-......-else
    参考代码如下:
SELECT NAME,age,CASE WHEN age>80 THEN '世外高人'
		     WHEN age>60 THEN '知天命'
		     WHEN age>40 THEN '不惑'
		     WHEN age>30 THEN '而立'
		     ELSE '小屁孩儿' END "details"
FROM t_emp;

以上代码编译结果如下:
在这里插入图片描述
------------------------------(分割线)----------------------------

  1. CASE expr WHEN 常量值1 THEN 值1 WHEN 常量值1 THEN 值1... [ELSE 值n] END
    相当于java中的switch...case...
    参考代码如下:
SELECT last_name,job_id,salary,
	CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
		        WHEN 'ST_CLERK' THEN 1.15*salary
		        WHEN 'SA_REP' THEN 1.20*salary
		        ELSE salary END       "REVISED"
FROM employees;     

举例:假如我们要实现以下功能:
查询部门号为 10,20, 30 的员工信息,
若部门号为 10, 则打印其工资的 1.1 倍,
20 号部门, 则打印其工资的 1.2倍,
30 号部门打印其工资的 1.3 倍数。
实现代码如下:

SELECT employee_id,last_name,department_id,salary,
       CASE department_id WHEN 10 THEN 1.10*salary
		          WHEN 20 THEN 1.20*salary
		          WHEN 30 THEN 1.30*salary
		          END  "new_salary"
FROM employees
WHERE department_id IN(10,20,30);

补充:其他函数
database() 返回当前数据库名
version() 返回当前数据库版本
user() 返回当前登录用户名
参考代码如下:

SELECT DATABASE(),VERSION(),USER()
FROM DUAL;

以上代码编译结果如下:
在这里插入图片描述

另外再补充几个常见的与密码相关的函数:
password(str) 返回字符串str的加密版本,41位长的字符串
md5(str) 返回字符串str的md5值,也是一种加密方式(不可逆的加密)
参考代码如下:

SELECT PASSWORD(156649131646),MD5(123456)
FROM DUAL;

以上代码编译结果如下:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值