select case when null = null then 1 null <> null then 2 else 3 end result_value from dual;
时间: 2024-02-19 19:01:17 浏览: 267
执行这个 SQL 语句的结果是 3。这是因为在 SQL 中,NULL 值与任何值都不相等,包括 NULL 本身。因此,当执行 `null = null` 时,结果为未知(unknown),而不是 true 或 false,因此会跳过第一个 `when` 子句,执行第二个 `when` 子句。同样,当执行 `null <> null` 时,结果也是未知(unknown),因此会执行 `else` 子句,返回结果值 3。在 SQL 中,判断 NULL 值是否相等或不相等时,应该使用 `is null` 或 `is not null` 来判断,而不是使用 `=` 或 `<>` 运算符。
相关问题
select case when null = null then 1 when null < > null then 2 else 3 end result_value from dual;
The result of this query would be 1.
Explanation:
- The first condition "null = null" is evaluated as true.
- The second condition "null < > null" is evaluated as null, because any comparison with null results in null.
- Since the second condition is not true, the query moves on to the "else" clause and returns 3.
select case ( a when a is not null then a else b end) from my_table错在哪
在 SQL 语法中,CASE 表达式应该是这样的:
```
SELECT CASE WHEN a IS NOT NULL THEN a ELSE b END FROM my_table;
```
其中,CASE 表达式的语法是:
```
CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
...
ELSE default_result
END
```
在这个例子中,我们使用了 WHEN 和 THEN 子句来定义条件和结果,并在 CASE 表达式的结尾使用了 ELSE 子句来定义默认结果。注意,CASE 表达式必须以 END 结尾。
另外,根据 SQL 标准,NULL 值之间不能使用等于运算符来比较,应该使用 IS NULL 或 IS NOT NULL。因此,我们在这个例子中使用了 IS NOT NULL 来判断 a 是否为 NULL。
阅读全文