• 周五. 2月 23rd, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

Excel & SQL | 控制函数 | 04

admin

11月 28, 2021

上表存储了每位同学的id、name (姓名)、class (班级)和score(成绩)四个字段。我们把上表中的数据存储在demo数据库的chapter8表中。

if()函数

对于Excel中的if()函数,读者应该都比较熟悉了,SQL中的if()函数与Excel中的原理基本一样,也是用来对某一个条件进行判断的,这里的判断主要就是我们前面讲过的比较运算。如果条件满足,则返回一个值;如果条件不满足,则返回另一个值。具体实现形式如下:

if(condition,a,b)

如果condition为真,则返回a值,否则返回b值。判断流程如下图所示。

现在我们要对某个分数进行判断,如果分数大于或等于60分,则返回“及格”,否则返回“不及格”,可以通过如下代码实现:

select if(50>=60,"及格";"不及格")

运行上面的代码,最后返回的结果为不及格。
如果我们要对表中某一列的每个值进行判断,只需要把上面代码中的50换成对应的列名即可,这样就是将该列中的每个值与60进行比较。比如,我们要对chapter8表中的每位同学的成绩进行判断,可以通过如下代码实现︰

select id,score,if(score>=60,"及格","不及格") as score_result from chapter8;

上面的例子利用的是简单的if()函数,if()函数还可以进行嵌套,也就是if()函数中还是if()函数。比如,我们要对某个分数进行判断,如果小于60分,则返回不及格,如果不小于60分但是小于80分,则返回良好,否则返回优秀,可以通过如下代码实现︰

select id,score,if(score<60,"不及格",if(score<80,"良好","优秀")) as score_result from chapter8;

case when函数

上面我们讲了多层if嵌套,就是先判断condition是否满足某个条件,如果满足,则返回一个值或进行下一个if判断;如果不满足,则返回一个值或进行下一个if判断。

虽然多层嵌套的原理比较简单,但是如果层数太多,读者还是会容易写混的,基于此,就有了这一节要讲的case when函数。case when函数主要有如下两种书写形式。

形式1:

case列名
	when 条件1 then返回值1
	when 条件2 then返回值2
	...
	when 条件n then返回值n
	else 返回默认值
end

注意:没有逗号!不要忘记end!

形式1是对某一列进行多层判断,如果这一列中的值满足条件1,则返回值1﹔如果这一列中的值满足条件2,则返回值2﹔如果这一列中的值满足条件n,则返回值n ;如果前面的n个条件都不满足,则返回指定的默认值﹔最后以end结束,且end一定要有。需要注意的是,形式1的条件只能是具体的值,而不能进行比较运算,如果进行比较运算会报错。

现在我们有这样一个需求,对chapter8表中class列的值进行替换,如果是一班,则返回class1;如果是二班,则返回class2;如果是三班,则返回class3,否则返回其他。这个需求可以通过如下代码实现:

select id,class,(case class
                when "一班" then "class1"
                when "二班" then "class2"
                when "三班" then "class3"
                else "其他"
                end) as class_result from chapter8;

形式2:

case
	when 列名满足条件1 then返回值1
	when 列名满足条件2 then返回值2
	...
	when 列名满足条件n then返回值n
	else 返回默认值
end

形式1不支持对列名进行比较运算,但是形式2是支持的,比如,前面讲过的多层if嵌套就可以通过形式2来实现,具体实现代码如下:

select id,score,(case
                when score<60 then "不及格"
                when score<80 then "良好"
                when score<100 then "优秀"
                else "可有可无 只是语法测试"
                end) as score_result from chapter8;
                

小结

sql的if语句
	select if(50>=60,"yes","no");
	select id,score,if(score>=60,"及格","不及格") as score_result from chapter8;
	select id,score,if(score<60,"不及格",if(score<80,"良好","优秀")) as score_result from chapter8;
	
case when
	基于对列的常量判断
	select id,class,(case class
                when "一班" then "class1"
                when "二班" then "class2"
                when "三班" then "class3"
                else "其他"
                end) as class_result from chapter8;
    基于对整列进行判断
	select id,score,(case
                when score<60 then "不及格"
                when score<80 then "良好"
                when score<100 then "优秀"
                else "可有可无 只是语法测试"
                end) as score_result from chapter8;
	
	
	

《Excel & SQL | 控制函数 | 04》有4个想法
  1. Получи права управлять автомобилем в первоклассной автошколе!
    Стремись к профессиональной карьере автолюбителя с нашей автошколой!
    Успей пройти обучение в лучшей автошколе города!
    Задай тон правильного вождения с нашей автошколой!
    Стань безупречным навыкам вождения с нашей автошколой!
    Начни уверенно водить автомобиль с нами в автошколе!
    Стремись к независимости и свободы, получив права в автошколе!
    Продемонстрируй мастерство вождения в нашей автошколе!
    Обрети новые возможности, получив права в автошколе!
    Приведи друзей и они получат скидку на обучение в автошколе!
    Стань профессиональному будущему в автомобильном мире с нашей автошколой!
    знакомства и научись водить автомобиль вместе с нашей автошколой!
    Развивай свои навыки вождения вместе с профессионалами нашей автошколы!
    Запиши обучение в автошколе и получи бесплатный индивидуальный урок от наших инструкторов!
    Стремись к надежности и безопасности на дороге вместе с нашей автошколой!
    Прокачай свои навыки вождения вместе с лучшими в нашей автошколе!
    Завоевывай дорожные правила и навыки вождения в нашей автошколе!
    Стремись к настоящим мастером вождения с нашей автошколой!
    Набери опыт вождения и получи права в нашей автошколе!
    Пробей дорогу вместе с нами – пройди обучение в автошколе!
    автошкола водіння http://avtoshkolaznit.kiev.ua/ .

  2. Bet on all your favorite sports at 1xBet
    Win Big with 1xBet: The Top Sports Betting Platform
    Experience the Excitement of Online Betting with 1xBet
    Get in on the Action with 1xBet: The Best Sports Betting Site
    Unleash Your Winning Potential with 1xBet
    Bet and Win with Confidence at 1xBet
    Join the 1xBet Community and Start Winning Today
    The Ultimate Sports Betting Experience Awaits at 1xBet
    1xBet: Where Champions Are Made
    Take Your Betting to the Next Level with 1xBet
    Get Ready to Win Big at 1xBet
    Multiply Your Winnings with 1xBet’s Exciting Betting Options
    Elevate Your Sports Betting Game with 1xBet
    Sign Up for 1xBet and Start Winning Instantly
    Experience the Thrill of Betting with 1xBet
    1xBet: Your Ticket to Winning Big on Sports
    Don’t Miss Out on the Action at 1xBet
    Join 1xBet Today and Bet on Your Favorite Sports
    Winning Has Never Been Easier with 1xBet
    Get Started with 1xBet and Discover a World of Betting Opportunities
    1xbet program 1xbet com app .

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注