IF 函数
select t.name,if(t.weight<80,'正常','肥胖') 体重 from t_customer t
CASE WHEN 语句
CASE WHEN ... THEN ...[WHEN ... THEN ...] ELSE ... END
: 可包含多个 WHEN ... THEN ...
子句
SELECT OrderID, Quantity,
CASE
WHEN Quantity > 30 THEN 'The quantity is greater than 30'
WHEN Quantity = 30 THEN 'The quantity is 30'
ELSE 'The quantity is under 30'
END AS QuantityText
FROM OrderDetails;
case具有两种格式。简单case函数和case搜索函数。简单的case函数较简介,case搜索函数功能更全。case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。
--简单case函数
case sex
when '1' then '男'
when '2' then '女’
else '其他' end
--case搜索函数
case when sex = '1' then '男'
when sex = '2' then '女'
else '其他' end
--比如说,下面这段sql,你永远无法得到“第二类”这个结果
case when col_1 in ('a','b') then '第一类'
when col_1 in ('a') then '第二类'
else '其他' end
INTERVAL 分段函数
INTERVAL(N,N1,N2,N3,..........): N是要判断的数值,N1,N2,N3,...是分段的间隔。
INTERVAL函数的返回值是 段的位置
:
如果N<N1,则返回0,
如果N1<=N<N2,则返回1,
如果N2<=N<N3,则返回2。
所以,区间是 前闭后开
(大于等于
小的数,小于
大的数)。
SELECT id,percent,INTERVAL(percent,25,50) from test;
-- 还可以把INTERVAL()函数用在GROUP BY中:
SELECT
INTERVAL (percent, 0, 26, 51),
COUNT(1)
FROM
test
GROUP BY
INTERVAL (percent, 0, 26, 51);
ELT 分值函数
ELT(N,str1,str2,str3,...): N是要判断的数值,如果N=1,则返回str1,如果N=2,则返回str2,以此类推。
SELECT id,percent,ELT(id,'id is 1','id is 2') from test;
SELECT
t. NAME,
ELT(t.LEVEL, '超级VIP', 'VIP', '普通') 客户类型
FROM
t_customer t
MYSQL中可以实现类似IF判断的方法 https://www.cnblogs.com/lihaoyang/p/6733002.html
SQL CASE Expression https://www.w3schools.com/sql/sql_case.asp
SQL CASE语句的使用 https://www.navicat.com.cn/company/aboutus/blog/341-sql-case
Mysql的分段函数INTERVAL()和分值函数ELT() https://blog.csdn.net/lkforce/article/details/109537495
SQL中的条件判断语句(case when zhen if,ifnull)用法 https://www.cnblogs.com/hao-1234-1234/p/11466179.html