MySQL 中与if相关的条件查询

 


表: username

测试数据:

备注:演示数据表创建及数据请从下面链接处下载:表结构及数据创建SQL文件

mysql if条件查询

1、IF(expr1,expr2,expr3)

如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。

SELECT
username,
IF
( u.STATUS = 1, "男", "女" ) AS 性别
FROM
user u

解释:if("条件", "满足条件返回的数据", "条件不成立返回的数据")

2、CASE…WHEN…THEN…ELSE…END

SELECT
u.username,
u.major,
CASE
u.major
WHEN "中文系" THEN
"zw"
WHEN "外语系" THEN
"wy"
WHEN "经管系" THEN
"jg"
ELSE u.major
END 简称
FROM
user u

解释: 1、格式 CASE 条件 WHEN 满足的条件1 THEN 满足1条件的输出结果 WHEN 满足的条件2 THEN 满足2条件的输出结果 ELSE else的输出结果 END 2、WHEN 后跟条件,THEN 后跟满足条件的输出,所有条件都不满足,则走ELSE,可不写 ELSE 3、当u.major=”中文系“,则输出zw

3、IFNULL(expr1,expr2)

假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。

SELECT
u.username,
u.user_content,
CASE
IFNULL( u.user_content ->> "$.position", "没有position这个key" )
WHEN "干事" THEN "员工001"
WHEN "部长 "THEN  "员工002"
WHEN "学生" THEN "员工003"
ELSE "其他"
END AS "ifnull查询结果"
FROM
user u

解释:

1、user_content字段类型为:json

2、u.user_content ->> "$.position" 含义:取user_content字段中key为position

3、user_content有position这个key则返回其key所对应的value,没有position则返回"没有position这个key"

4、WHEN 后跟的其实是IFNULL( u.user_content ->> "$.position", "没有position这个key" ) 的返回值