测试数据:
备注:演示数据表创建及数据请从下面链接处下载:表结构及数据创建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
4、WHEN 后跟的其实是IFNULL( u.user_content ->> "$.position", "没有position这个key" ) 的返回值
MySQL 中与if相关的条件查询
mysql