mysql之控制流函数

目录

1.case函数:如果满足WHEN分支中的条件,则返回THEN分支中的相应结果,否则返回ELSE分支中的结果。

2.if函数:根据给定的条件返回一个值。

3.ifnull函数:如果第一个参数不为NULL,则返回第一个参数,否则返回第二个参数。

4.nullif函数:如果第一个参数等于第二个参数,则返回NULL,否则返回第一个参数。


1.case函数:如果满足WHEN分支中的条件,则返回THEN分支中的相应结果,否则返回ELSE分支中的结果。

CASE表达式是一个流控制结构,允许您在查询中构造条件,例如:SELECTWHERE子句。 MySQL为您提供了两种形式的CASE表达式。

第一种

CASE value
WHEN compare_value_1 THEN result_1
WHEN compare_value_2 THEN result_2
…
ELSE result END

第二种

CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
…
ELSE result END

CASE表达式返回的数据类型取决于使用它的上下文的结果。 例如,如果在字符串上下文中使用CASE表达式,则会以字符串形式返回结果。 如果在数值上下文中使用CASE表达式,则会以整数,小数或实数值的形式返回结果。 //更多请阅读:https://www.yiibai.com/mysql/case-function.html
 

查询语句:
SELECT
	case client_id
	when 8 then '青岛' 
	when 10 then '上海'
	when 11 then '威海'
	else '烟台'
	end city
FROM
	`bms_bills_memo`
	
	where id = 4
结果:上海

查询语句:
	SELECT
	case 
	when client_id=8 then '青岛' 
	when client_id=10 then '上海'
	when client_id=11 then '威海'
	else '烟台'
	end city
FROM
	`bms_bills_memo`
	
	where id = 4
结果:上海

case语句可以放在where条件中,不过用到的较少

2.if函数:根据给定的条件返回一个值。

IF(expr1,expr2,expr3)

如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定 

IF expression THEN
   statements;
ELSEIF elseif-expression THEN
   elseif-statements;
...
ELSE
   else-statements;
END IF;

如果表达式(expression)求值为TRUE,则IF分支中的语句(statements)将执行;如果表达式求值为FALSE,则如果elseif_expression的计算结果为TRUE,MySQL将执行elseif-expression,否则执行ELSE分支中的else-statements语句 。

查询语句;
		SELECT
IF(client_id = 8,'1','2') code
FROM
	`bms_bills_memo` 
WHERE
	id = 4
结果:
2

3.ifnull函数:如果第一个参数不为NULL,则返回第一个参数,否则返回第二个参数。

接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。

IFNULL(expression_1,expression_2);

 如果expression_1不为NULL,则IFNULL函数返回expression_1; 否则返回expression_2的结果。

IFNULL函数根据使用的上下文返回字符串或数字。

  • IFNULL(1,0)返回1,因为1不为NULL
  • IFNULL('',1)返回'',因为''字符串不为NULL
  • IFNULL(NULL,'IFNULL function')返回IFNULL函数字符串,因为第一个参数为NULL
    我们来看一下使用IFNULL函数的实例。

4.nullif函数:如果第一个参数等于第二个参数,则返回NULL,否则返回第一个参数。

NULLIF(expression_1,expression_2);

如果expression_1 = expression_2true,则NULLIF函数返回NULL,否则返回expression_1 。 

 NULIF(1,1)返回NULL,因为1等于1

  • NULLIF(1,2)返回1,这是第一个参数,因为1不等于2
  • NULLIF('MySQL NULLIF','MySQL NULLIF')返回NULL,因为两个参数是相同的字符串。
  • NULLIF('MySQL NULLIF','MySQL IFNULL')返回MySQL NULLIF,因为两个字符串不相等。
  • NULLIF(1,NULL)返回1,因为1不等于NULL
  • NULLIF(NULL,1)返回第一个参数,即NULL,因为NULL不等于1

您可以使用NULLIF函数来阻止除以零

SELECT 1/NULLIF(0,0); -- return NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值