目录
1.case函数:如果满足WHEN分支中的条件,则返回THEN分支中的相应结果,否则返回ELSE分支中的结果。
3.ifnull函数:如果第一个参数不为NULL,则返回第一个参数,否则返回第二个参数。
4.nullif函数:如果第一个参数等于第二个参数,则返回NULL,否则返回第一个参数。
1.case函数:如果满足WHEN
分支中的条件,则返回THEN
分支中的相应结果,否则返回ELSE
分支中的结果。
CASE
表达式是一个流控制结构,允许您在查询中构造条件,例如:SELECT或WHERE子句。 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_2
为true
,则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')
返回MySQLNULLIF
,因为两个字符串不相等。NULLIF(1,NULL)
返回1
,因为1
不等于NULL
。NULLIF(NULL,1)
返回第一个参数,即NULL
,因为NULL
不等于1
。
您可以使用NULLIF
函数来阻止除以零
SELECT 1/NULLIF(0,0); -- return NULL