if函数,case运算符

if

/*IF(expression, first, second)
#如果expression为真返回first否则返回second
#可以返回任何值,字符串,空值,数字,日期*/
SELECT
	order_id,
    order_date,
    IF(
		YEAR(order_date) = YEAR(NOW()),
        'Active', 
        'Archived') AS a 
FROM orders
#订单是否在今年下单

 

case

/*
CASE
	WHEN expression1 THEN result1#如果expression1为真,返回result1
    WHEN expression2 THEN result2#如果expression2为真,返回result2
    ELSE可加可不加
END
*/
SELECT 
	order_id,
    CASE
		WHEN YEAR(order_date) = YEAR(NOW()) THEN 'Active'
        WHEN YEAR(order_date) = YEAR(NOW()) - 1 THEN 'Last year'
		WHEN YEAR(order_date) < YEAR(NOW()) - 1 THEN 'Archived'
		ELSE 'Future'
	END AS catefory
FROM orders
SELECT 
	CONCAT(first_name, ' ', last_name) AS customer,
    points,
    CASE
		WHEN points > 3000 THEN 'Gold'
		WHEN points >=2000 THEN 'Silver'   #第一个为假就落到了第二个,即【2000,3000】
        ELSE 'Bronze'
	END AS category
FROM customers
ORDER BY points DESC

if endif

/*我们一般使用参数为存储过程传递值
也可以使用参数为调用程序赋值*/
#获取州名,返回位于那个州的顾客 
DELIMITER $$
CREATE PROCEDURE get_clients
(
	state CHAR(2)
)#类型设置为char,括号里写上所有参数,如果有很多个参数用逗号分割
BEGIN
     IF state IS NULL THEN
		SET state = 'CA'
	END IF;
	SELECT * FROM clients c
    WHERE c.state = state;
END$$
DELIMITER ;

if else endif

DELIMITER $$
CREATE PROCEDURE get_clients
(
	state CHAR(2)
)
BEGIN
     IF state IS NULL THEN
		SELECT * FROM clients;
	 ELSE 
		SELECT * FROM clients c
		WHERE c.state = state;
	 END IF;	
END$$
DELIMITER ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值