case 后加 字段和不加字段区别
时间: 2024-04-06 09:12:27 浏览: 58
在编写 switch 语句时,在 case 之后加上一个字段(常量表达式)是可选的。如果不加字段,那么这个 case 语句就是一个默认情况。如果加上了字段,则只有当 switch 表达式的值等于这个字段的值时,才会执行这个 case 语句。因此,区别在于是否需要执行某个特定的 case 块。
例如,考虑以下代码片段:
```
switch (x) {
case 1:
// do something
break;
case 2:
// do something else
break;
default:
// do something if x is neither 1 nor 2
break;
}
```
在这个代码中,如果 x 的值为 1,那么第一个 case 块将被执行;如果 x 的值为 2,那么第二个 case 块将被执行;否则,最后一个 default 块将被执行。
如果我们改变第一个 case 块的写法,将其写成如下形式:
```
case 1:
case 3:
// do something
break;
```
那么当 x 的值为 1 或 3 时,这个 case 块将被执行。但是,如果我们将其改成如下形式:
```
case 1,3:
// do something
break;
```
这种写法是不合法的,编译器会报错。
相关问题
sqlserver中 case 字段名 when 和case when 字段名 有什么区别
在 SQL Server 中,`CASE` 语句是一种条件判断和值返回的结构,常用于创建表达式或计算列。`CASE WHEN` 和 `CASE` 的区别在于:
1. **简单 CASE** (`CASE`): 这是一个基本形式的 CASE 语句,它允许你在单个表达式的上下文中设置多个条件和结果。语法结构通常是这样的:
```sql
SELECT CASE
WHEN condition_1 THEN result_1
[WHEN condition_2 THEN result_2]
...
ELSE default_result
END AS column_name
```
如果 `condition_1` 成立,则返回 `result_1`;如果所有 `WHEN` 都不满足,则执行 `ELSE` 子句。
2. **WHEN 简单嵌套** (`CASE WHEN`): 这实际上也是一种特殊情况,当 `WHEN` 后面跟一个简单的布尔表达式,可以用来代替上面的多个条件分支。例如:
```sql
SELECT CASE WHEN condition THEN result ELSE default_result END AS column_name
```
如果 `condition` 为真,则返回 `result`,否则返回 `default_result`。
总的来说,`CASE` 允许更复杂的逻辑链,而 `CASE WHEN` 更适合只有一个简单条件的情况。如果你需要处理多个独立的条件,通常会使用多个 `WHEN` 分支。在实际使用中,选择哪种形式取决于你的业务需求和数据条件的复杂度。
CASE WHEN 后面的字段去重
如果你想对 `CASE WHEN` 语句后面的字段进行去重,可以使用子查询或者临时表来实现。以下是使用子查询的示例:
```sql
SELECT DISTINCT field
FROM (
SELECT CASE WHEN condition THEN field ELSE NULL END AS field
FROM your_table
) AS subquery
WHERE field
阅读全文