CASE编程主要有两种常见用法:
Switch语句中的CASE
基本形式:`switch(表达式) { case 常量表达式1: 语句1 case常量表达式2: 语句2 ... case常量表达式n: 语句n default: 语句n+1 }`
说明:`switch`后面的括号内的表达式可以是任何类型。当表达式与某一个`case`后面的常量表达式相等时,就执行该`case`后面的语句。如果没有匹配的`case`,则执行`default`后面的语句。每个`case`的常量表达式的值必须互不相同,否则会出现矛盾。各个`case`和`default`的出现次序不影响结果。执行完一个`case`语句后,流程就转移到下一个`case`并继续执行。因此,在`case`的分支后,通常需要加`break`语句来跳出`switch`语句。
SELECT语句中的CASE
基本形式:`SELECT LogID, UserID, LogTime, Url, Description, (case when OperateType = 0 then '新增' when OperateType = 1 then '修改' else '删除' end) FROM LOG`
说明:在`SELECT`语句中,可以使用`CASE`表达式来根据某个字段的值选择不同的列值。`CASE`语句的结构为`case when 条件 then 值1 when 条件2 then 值2 ... else 值n end`。当条件满足时,选择对应的值,否则选择`else`后的值。
示例
Switch语句示例
```c
include
int main() {
int lightColor;
printf("输入信号灯颜色(1:红色,2:黄色,3:绿色): ");
scanf("%d", &lightColor);
switch (lightColor) {
case 1:
printf("停车等待。\n");
break;
case 2:
printf("准备减速。\n");
break;
case 3:
printf("可以通行。\n");
break;
default:
printf("无效颜色输入。\n");
break;
}
return 0;
}
```
Select语句示例
```sql
SELECT LogID, UserID, LogTime, Url, Description,
CASE WHEN OperateType = 0 THEN '新增'
WHEN OperateType = 1 THEN '修改'
ELSE '删除'
END AS OperationName
FROM LOG;
```
建议
全面性:确保`case`语句覆盖所有可能的输入情况,包括合理和不合理的输入。
可读性:`case`语句应逻辑清晰,粒度小,便于理解和维护。
易用性:减少冗余的`case`,确保每个`case`对应一个明确的功能点。
通过以上示例和建议,你可以更好地理解和应用`case`编程在不同场景下的写法。