case语句

合集下载

mysql中case的用法

mysql中case的用法

mysql中case的用法MySQL中的CASE语句用于根据指定条件返回不同的结果。

它类似于其他编程语言中的switch语句。

CASE语句有两种格式,简单CASE函数和CASE函数。

一、简单CASE函数简单CASE函数格式如下:CASE expressionWHEN value1 THEN result1WHEN value2 THEN result2...ELSE else_resultEND该格式中,expression是一个要比较的表达式,value1、value2等是用于比较的取值,result1、result2等是与取值匹配时返回的结果,else_result是当没有匹配的取值时返回的结果。

例如,我们有一张名为student的学生表,包含id、name和score 字段,如下所示:id , name , score----,--------,-------1 , Alice , 802 , Bob , 603 , Charlie, 90我们可以使用以下查询语句根据学生分数的不同返回不同的等级:SELECT name,CASEWHEN score >= 90 THEN 'A'WHEN score >= 80 THEN 'B'WHEN score >= 70 THEN 'C'ELSE'D'END AS gradeFROM student;以上查询语句的结果为:name , grade--------,------Alice , BBob , DCharlie , A二、CASE函数CASE函数格式如下:CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE else_resultEND该格式中,condition1、condition2等是用于判断的条件,result1、result2等是当条件满足时返回的结果,else_result是当没有满足的条件时返回的结果。

case语句

case语句

case语句case语句是多分⽀选择语句,if语句只有两个分⽀可供选择,⽽实际问题中常常需要⽤到多分⽀选择结构。

例如,学⽣成绩分类(90分以上为A,……);⼈⼝统计分类(按年龄分为⽼、中、青、少、幼)等。

当然这些都可以⽤if语句的嵌套形式来实现,但如果分⽀较多,则嵌套的if语句层数太多,程序冗长⽽降低了可读性,也给修改带来了极⼤的困难。

Pascal语⾔提供了case语句可直接处理多分⽀选择,case语句由⼀个选择表达式和众多可选择的操作序列组成,运⾏时根据表达式的求值结果,在众多的分⽀中选取⼀个分⽀执⾏。

case语句的⼀般形式如下:case 表达式 of常数表1: 语句1;常数表2: 语句2;常数表3: 语句3;… …常数表n: 语句n;else 语句n+1;end;说明:1、case的英⽂意义有“情况”、“情形”之意,我们可能这样理解case语句:当表达式的值与常数表中某⼀值相匹配,则执⾏其后⾯的相应语句;如果常数表中没有与表达式相匹配的常数,则执⾏else后⾯的相应语句。

2、else可以省略,此时若⽆与表达式的值相匹配的常数表时程序将向下运⾏并跳出case语句。

3、保留字end与保留字case成对出现,这个end表⽰case语句的结束。

4、表达式的类型通常是整形与字符型,也可以是枚举型和⼦界型5、常数表是⼀个或⼀组常量,其类型与表达式类型⼀致,常数表⾏的次序是任意的,不⼀定要按从⼩到⼤或从⼤到⼩的次序排列,通常表可能性⼤的常数表列于前⾯,以加快程序运⾏的速度。

例1:输⼊⼀个个位数字,输出这个数字的英⽂拼法varn:byte;beginwrite('Input the number: ');readln(n);case n of0: writeln('Zero');1: writeln('One');2: writeln('Two');3: writeln('Three');4: writeln('Four');5: writeln('Five');6: writeln('Six');7: writeln('Seven');8: writeln('Eight');9: writeln('Nine');end;end.例2:输⼊⼆个实数及运算符,输出它们的和、差、积、商vara,b,w:real;op:char;beginwrite('Input a,b: ');readln(a,b);write('Input operator: ');readln(op);case op of'+': w:=a+b;'-': w:=a-b;'*': w:=a*b;'/': w:=a/b;end;writeln(w:0:2);end.例3:根据学⽣的成绩给予相应的分数等级,对应关系如下:90-100 A;80-89 B;60-79 C;60分以下 Dvars:byte;ch:char;beginwrite('Input the score: ');readln(s);case s div 10 of10,9: ch:='A';8: ch:='B';7,6: ch:='C';else ch:='D';end;writeln(s,'-->',ch);end.作业:1、zerojudge:a053、d460、a2442、输⼊年、⽉,输出该⽉的天数。

case循环语句实例

case循环语句实例

case循环语句实例
嘿,咱今儿就来好好唠唠这 case 循环语句实例!你知道吗,这就好比是一个超级智能的导航系统。

比如说你要去一个地方,它能根据不
同的情况给你指出不同的路线。

咱先来看个简单的例子哈。

就好比你有一堆不同颜色的球,红色、
蓝色、绿色啥的。

然后你要用 case 循环语句来处理它们。

比如说,遇
到红色球就做一件事,遇到蓝色球就做另一件事。

哎呀,这多有意思啊!就好像你是个指挥官,那些球就是你的小兵,你指挥它们干啥它们就得干啥。

再举个复杂点的例子,比如在一个游戏里,根据玩家的不同操作,
程序要做出不同的反应。

这不就是 case 循环语句大显身手的时候嘛!
你想想看,要是没有它,那程序得多混乱啊!简直不敢想象!它就
像一个贴心的小助手,帮你把一切都安排得妥妥当当的。

那你说,这 case 循环语句是不是超级重要?它让我们的程序变得更智能、更灵活!它能处理各种复杂的情况,让一切都有条不紊地进行着。

我觉得啊,case 循环语句就是编程世界里的一颗璀璨明星!没有它,编程可就少了好多乐趣和效率呢!咱可得好好掌握它,让它为我们的
编程之路增添光彩呀!。

sqlcase语句用法

sqlcase语句用法

sqlcase语句用法SQL的CASE语句是一种在查询时使用的条件语句。

它允许开发人员根据特定的条件,根据不同的结果执行不同的操作。

CASE语句类似于其他编程语言中的switch语句,但其语法和用法略有区别。

CASE语句可以分为两种类型:简单CASE表达式和搜索CASE表达式。

简单CASE表达式的语法如下:CASE expressionWHEN value1 THEN result1WHEN value2 THEN result2...ELSE resultEND在这种情况下,表达式将与每个WHEN子句中指定的值进行比较,如果匹配,则返回相应的结果。

如果没有任何匹配项,它将返回ELSE 子句中指定的结果。

如果没有ELSE子句,则返回NULL。

以下是一个简单的CASE语句的示例:SELECT employee_id, last_name,CASE department_idWHEN 10 THEN 'Administration'WHEN 20 THEN 'Marketing'WHEN 30 THEN 'Sales'ELSE 'Other'ENDFROM employees;这个示例中,我们根据不同的department_id值返回不同的部门名称。

如果department_id为10,则返回"Administration",如果department_id为20,则返回"Marketing",如果department_id为30,则返回"Sales",对于其他任何department_id值,我们将返回"Other"。

搜索CASE表达式的语法如下:CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultEND在这种情况下,每个WHEN子句中的条件将被评估,如果满足条件,则返回相应的结果。

汇川case语句用法

汇川case语句用法

汇川case语句用法汇川case语句用法在编程中,case语句是一种实现多分支选择的控制流结构。

case语句通常用于针对不同的值执行不同的操作。

在汇川开发中,也存在着使用case语句的一些常见用法。

下面将列举一些用法并进行详细讲解。

1. 单个条件判断使用case语句进行单个条件判断时,通常会使用when关键字。

示例如下:case variablewhen value1# 执行操作1when value2# 执行操作2when value3# 执行操作3else# 执行默认操作end•variable是需要进行判断的变量。

•value1、value2、value3是可能的取值。

•# 执行操作1、# 执行操作2、# 执行操作3是根据不同取值执行的操作。

•# 执行默认操作是当变量的值不匹配任何已定义的取值时执行的操作。

2. 多个条件判断在某些情况下,需要对多个条件进行判断,并执行相应的操作。

可以使用case语句的多个when子句来实现。

示例如下:case variablewhen value1# 执行操作1when value2, value3# 执行操作2when value4# 执行操作3else# 执行默认操作end•value1、value2、value3、value4是可能的取值。

•# 执行操作1、# 执行操作2、# 执行操作3是根据不同取值执行的操作。

•# 执行默认操作是当变量的值不匹配任何已定义的取值时执行的操作。

3. 正则表达式匹配除了可以进行精确的取值判断外,case语句还可以用于正则表达式匹配。

示例如下:case variablewhen /pattern1/# 执行操作1when /pattern2/# 执行操作2else# 执行默认操作end•/pattern1、/pattern2是正则表达式模式。

•# 执行操作1、# 执行操作2是根据匹配结果执行的操作。

•# 执行默认操作是当变量的值不匹配任何已定义的正则表达式时执行的操作。

case语句

case语句

case语句case语句1.什么是casecase语句和if类似,也是⽤来判断,只不过当判断条件较多时,使⽤case语句会⽐if更加⽅便2.case使⽤场景在⽣产环境中我们总会遇到⼀个问题需要根据不同预案,那么我们要处理这样的问题⾸先要根据可能出现的情况写出对应的预案,然后根据选择来加载不同的预案⽐如服务的启停脚本,我们⾸先要写好启动,停⽌重启的预案,然后根据不同的选择来加载不同的预案3.case基础语法case 变量 in条件 1)执⾏代码块1;;条件 1)执⾏代码块2;;条件 1)执⾏代码块3;;条件 1)执⾏代码块4;;*)不匹配后命令序列esac1. case演⽰⽰例:需求2:使⽤case实现nginx状态监控脚本。

stub_statussh nginx_status.shUSAGE nginx_status.sh { Active | accepts | handled | requests | Reading | Writing |Waiting }1.nginx开启状态监控[root@manager case]# cat /etc/nginx/conf.d/test.confserver {listen 80;server_name ;location / {index index.html;}location /nginx_status {stub_status;}}3.case[root@manager case]# cat case-5.sh#!/bin/bash# Author: QQ: 552408925# Date: 2019-10-30# FileName: case-5.sh# URL: https://# Description:HostName=Nginx_status_file=nginx.statusNginx_Status_Path=nginx_statuscurl -sH Host:${HostName} http://127.0.0.1/${Nginx_Status_Path} >${Nginx_status_file}case $1 inactive)echo $(( $(awk '/Active connections/ {print $NF}' ${Nginx_status_file}) -1 ));;accepts)echo $(( $(awk 'NR==3 {print $1}' ${Nginx_status_file}) -1 ));;handled)echo $(( $(awk 'NR==3 {print $2}' ${Nginx_status_file}) -1 ));;requests)echo $(( $(awk 'NR==3 {print $3}' ${Nginx_status_file}) -1 ));;*)echo "USAGE: $0 { active | accepts | handled | requests | Reading | Writing | Waiting }" exit 1esacNgixn启停脚本#!/bin/bash# Author: QQ: 552408925# Date: 2019-10-30# FileName: case-4.sh# URL: https://# Description:source /etc/init.d/functionsnginx_pid=/var/run/nginx.pidcase $1 instart)if [ -f $nginx_pid ];thenif [ -s $nginx_pid ];thenaction "Nginx 已经启动" /bin/falseelserm -f $nginx_pidsystemctl start nginx &>/dev/nullif [ $? -eq 0 ];thenaction "Nginx启动成功" /bin/trueelseaction "Nginx启动失败" /bin/falsefifielsesystemctl start nginx &>/dev/nullif [ $? -eq 0 ];thenaction "Nginx启动成功" /bin/trueelseaction "Nginx启动失败" /bin/falsefifi;;stop)if [ -f $nginx_pid ];thensystemctl stop nginx && \rm -f $nginx_pidaction "Nginx is stopped" /bin/trueelseecho "[error] open() "$nginx_pid" failed (2: No such file or directory)"fi;;status)if [ -f $nginx_pid ];thenecho "nginx (pid $(cat $nginx_pid)) is running..."elseecho "nginx is stopped"fi;;reload)#1.nginx没有启动直接报错#2.nginx启动了,先检查配置⽂件语法#如果nginx语法没问题,则reload#如何nginx语法有问题#提⽰⽤户是否进⼊对应的错误⾏数修改 [ y | n ]# y 进⼊修改# n 退出操作if [ -f $nginx_pid ];thennginx -t -c /etc/nginx/nginx.conf &>nginx.errrc=$?if [ $rc -eq 0 ];thenaction "Nginx is Reloaded" /bin/trueelsengx_conf=$(cat nginx.err |awk -F "[ :]" 'NR==1 {print $(NF-1)}')ngx_line=$(cat nginx.err |awk -F "[ :]" 'NR==1 {print $NF}')read -p "是否进⼊ ${ngx_conf} 配置⽂件的 ${ngx_line} ⾏修改: [ y | n ] " tt case $tt iny)vim $ngx_conf +${ngx_line};;n)exit 1esacfielseaction "Nginx 没有启动" /bin/falsefi;;*)echo "USAGE: $0 {start|stop|status|restart}"exit 1esac。

case语句

case语句

case语句⼀case条件语句case条件语句相当于多分⽀的if/elif/else条件语句,但是它看起来更规范更⼯整,常被应⽤于实现系统服务启动脚本等企业应⽤场景中。

在case语句中,程序会将case获取的变量的值与表达式部分的值1、值2、值3等逐个进⾏⽐较。

如果获取的变量值和某个值(例如值1)相匹配,就会执⾏值(例如值1)后⾯对应的指令(例如指令1,其可能是⼀组指令),直到执⾏到双分号(;;)才停⽌。

然后再跳出case语句主体,执⾏case语句(即esac字符)后⾯的其他命令。

如果没有找到匹配变量的任何值,则执⾏"*)"后⾯的指令(通常是给使⽤者的使⽤提⽰),直到遇到双分号(;;) (此处的双分号可以省略)或esac结束。

这部分相当于if多分⽀语句中最后的else语句部分。

另外, case语句中表达式对应值的部分,还可以使⽤管道等更多功能来匹配。

(⼀)case语句的语法适合判断变量值case 变量引⽤ inPAT1/值1)分⽀1/指令1;;PAT2/值2)分⽀2/指令2;;...*)默认分⽀;;esaccase条件语句的执⾏流程逻辑图:说明:当变量的值等于值1时,执⾏指令1;等于值2时执⾏指令2,以此类推;如果都不符合,则执"*)"后⾯的指令。

此外,注意不同⾏内容的缩进距离。

(⼆)case⽀持glob风格的通配符*: 任意长度任意字符: 任意单个字符[ ]:指定范围内的任意单个字符a|b: a或b注意变量引⽤就是带$变量的名称。

如果第1个模式不匹配就继续执⾏第2个模式的代码。

*相当于else操作,表⽰的任意的字符串。

满⾜*就执⾏默认分⽀的操作。

默认分⽀后⾯的两个分号可以不写的。

[root@centos7 ~]# type casecase is a shell keyword[root@centos7 ~]# help casecase: case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esacExecute commands based on pattern matching.Selectively execute COMMANDS based upon WORD matching PATTERN. The`|' is used to separate multiple patterns.也就是表⽰或的关系Exit Status:Returns the status of the last command executed.使⽤case写脚本判断变量是否是离散值如果变量num的值是1,2,3那么就执⾏某个命令cmd1。

选择结构case语句

选择结构case语句

例一: 输入年、月,输出该月的天数
讨论:每年的1、3、5、7、8、10、12月,每月有31天; 4、6、9、11月,每月有30天; 2月,若是闰年有29天,平年有28天。
闰年是指年份能被4整除,但不能被100整除,或者年份能被 400整除的年。 设:年year 月month 每月天数days
判断闰年表达式:
read(year,month); case month of
1,3,5,7,8,10,12:days:=31; 4,6,9,11:days:=30; 2:if (year mod 4=0) and (year mod 100<>0) or (year mod 400=0)
then days:=29 e9;,year,' month=',month,' days=',days) end.
2.计算days
根据month的值选择计算
1,3,5,7,8,10,12:days:=31
4,6,9,11:
days:=30
2:
if 闰年 then days:=29 else days:=28
3.输出year,month,days
例一:输入年、月,输出该月的天数
Program monthdays(input,output); var year,month,days:integer; begin
(year mod 4=0) and (year mod 100<>0) or (year mod 400=0)
例一:输入年、月,输出该月的天数
一级算法: 1.输入year,month 2.计算days 3.输出year,month,days
例一:输入年、月,输出该月的天数
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

复习:
输入三个数a,b,c,输出最大数(分别用不嵌套if 和嵌套的if语句)
(提问)
4.4 Case语句
[例4-4-1] 某服装公司为了推销产品,采取这样的批发销售方案:凡订购超过100 套的,每套定价为50元,否则每套价格为80元。

编程由键盘输入订购套数,输出应付款的金额数。

解:设X为订购套数,Y为付款金额,则:
Var x,y: integer;
Begin
Write('X=') ;Readln(x) ;
if x >100 then y:=50*X else y:=80*X;
Writeln('y=',y) ;
Readln
End.
如果有多种(两种或两种以上)选择,常用情况语句编程。

将前面[例]改成用如下方法来处理。

根据题意,付款计算可分为两种情况:
①Y=50*X (X>100)
②Y=80*X (X<=100)
显然,情况①与②的选择取决于X值。

假设用N表示“情况值”,暂且先让N =2;
如果X>100则N=1;(此题中N的值只是1或2,且取决于X值)
Var X,Y,N: integer;
Begin
Write('X=') ;readln(x) ;n:=2;{ 先让n=2 }
if X>100 then n:=1;{如果X>100则n=1 }
Case n of { 关于情况处理}
1: Y:=50*X;
2: Y:=80*X;
end;
Writeln('Y=',Y) ;
Readln
End.
程序中的Case─end 语句为情况语句,是多路分支控制,一般格式为:
格式一:
case 表达式of
情况常量表1:语句1;
情况常量表2:语句2;
……
情况常量表n:语句n;
end;
格式一:执行情况语句时,先计算Case后面表达式的值,然后根据该值在情况常量表中的“对应安排”,选择其对应的语句执行,执行完所选择语句后就结束Case语句;如果常量表中没有一个与表达式值对应的语句,则什么也不做就结束本Case语句。

格式二:
Case 表达式of
情况常量表1: 语句1;
情况常量表2: 语句2;
……
情况常量表n: 语句n;
else 语句n+1
end;
格式二:这种格式的前面部分是相同的,所不同的是:如果常量表中没有一个与表达式值对应的语句,则执行与else对应的语句,然后结束Case语句。

case语句在使用时有几点要注意:
1. end与case对应;标号与语句之间用“:”分隔;else与语句之间不用分隔符。

2.表达式的类型通常是整型或字符型。

所以表达式经常会用到mod、div运算和trunc、round等函数。

3.情况常量表必须是一个或几个常量,常量间用“,”间隔,其类型与表达式的类型一致。

常量间的顺序可以是任意的。

也就是说可以多个标号对应同一条语句。

4. 语句可以是多个语句,但必须用语句括号(begin……end)括起即复合语句。

5. case语句也可以嵌套
[例4-4-2] 对某产品征收税金,在产值1万元以上征收税5%;在1万元以下但在5000元以上的征收税3%;在5000元以下但在1000元以上征收税2%;1000元以下的免收税。

编程计算该产品的收税金额。

解:设x为产值,tax为税金,用P表示情况常量各值,以题意中每1000元为情况分界:
P=0: tax=0 (x<1000 )
P=1,2,3,4: tax=x*0.02 (1000<=x<5000 )
P=5,6,7,8,9: tax=x*0.03 (5000<X<=10000 )
P=10: tax=x*0.05 (x> 10000 )
这里的P是“情况”值,用产值x除以1000的整数值作为P,如果P>10也归入P=10的情况。

Pascal语言用P=trunc(x/1000)取整计算,
Var x,p : integer;
Tax : real;
Begin
Write('Number=') ;readln(x) ;
P:=trunc(x/1000) ;
if P>9 then P:=10;
Case P of
0 : tax:=0;
1,2,3,4 : tax:=x*0.2;
5,6,7,8,9 : tax:=x*0.3;
10 : tax:=x*0.5
end;
Writeln('tax=',tax:5:2) ;
Readln
End.
[例4-4-3]某全自动加油站a,b,c三种汽油的单价(元/kg)分别是1.50、1.35和1.18,也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠。

编一个程序,用户输入加油量、汽油品种和服务类型(f-自动,m-自己,e-协助),然后计算应付款。

var
oil,help:char; kg,total:real;
begin
write('Enter the amount in kilograms(kg):'); readln(kg);
write('Which type of the gasoline(a,b,c):'); readln(oil);
write('Which type for service(f,m,e):'); readln(help);
case oil of {处理汽油的类型}
'a': total:=1.50*kg;
'b': total:=1.35*kg;
'c': total:=1.18*kg;
else writeln('Input Error!')
end;
case help of {处理服务类型}
'f':;
'm': total:=total*(1-0.05);
'e': total:=total*(1-0.10);
else writeln('Input Error!')
end;
writeln;
writeln('Total is ',total:10:2);
end.
[例4-4-4]从键盘上读入年和月,输出该月有多少天。

var year,month,day:integer;
begin
write('Enter year and month:'); readln(year,month);
case month of
1,3,5,7,8,10,12: day:=31;
4,6,9,11: day:=30; {以上处理31天和30天的情况}
2: if (year mod 400=0) or ((year mod 4=0) and (year mod
100<>0))then day:=29 else day:=28; {以上处理闰年情况}
end;
writeln('day=',day)
end.
例P44 例4-18
练习:
1、运输公司计算运费时,距离(S)越长,每公里运费越低,标准如下:
如果S<250公里;运费为标准运价P的100%
如果250公里<=S<500公里,运费为标准运价P的98%;
如果500公里<=S<1000公里,运费为标准运价P的95%;
如果1000公里<=S<2000公里,运费为标准运价P的92%;
如果2000公里<=S<3000公里,运费为标准运价P的90%;
如果S=>3000公里,运费为标准运价P的85%;。

请编计算运费的程序。

(输入距离S以及标准运价P(每公里的标准运价),输出运费。

) {用case语句做}
2、当前小学生的成绩单由以前的百分制改为优秀、良好、合格、不合格四个等级的等级制。

编一程序完成分数的自动转换工作。

转换规则如下:60分以下的为不合格;60到69分为合格;70到89分为良好;90分以上的为优秀。

(提示:可以利用DIV运算来使程序更简明)
3、输入一个字母符,按下面规则输出相应数字。

输入a,b,c,d或A,B,C,D则分别对应输出1,2,3,4,若是其它字符则输出5。

输出a,b,c中最大值。

不嵌套:
if a>b then max:=a else max:=b;
if c>max then max:=c;
writeln(max);
嵌套:
If a>b then if a>c then max:=a;
else max:=c
else if b>c then max:=b
else max:=c;
writeln(max)。

相关文档
最新文档