相关疑难解决方法(0)

CASE语句和DECODE是等效的吗?

看起来简单的CASE表达式和DECODE函数是等价的,并且它们返回的结果应该是相同的.是吗?

该文档有关于简单CASE表达式的以下内容:

简单的CASE表达式返回selector_value与selector匹配的第一个结果.不评估剩余表达式.如果没有selector_value与selector匹配,则CASE表达式返回else_result(如果存在),否则返回NULL.

将其与DECODE函数进行比较,描述似乎相同.

DECODE将expr逐个与每个搜索值进行比较.如果expr等于搜索,则Oracle数据库返回相应的结果.如果未找到匹配项,则Oracle返回默认值.如果省略default,则Oracle返回null.

由于搜索到的CASE表达式可以等同于简单,因此可以将其解释为相同.

这三个陈述似乎都返回相同的结果,0.

select case 1 when 2 then null else 0 end as simple_case
     , case when 1 = 2 then null else 0 end as searched_case
     , decode(1, 2, null, 0) as decode
  from dual
Run Code Online (Sandbox Code Playgroud)

简单的CASE表达式和DECODE函数(以及在特定情况下搜索的CASE表达式)是否总是返回相同的结果?

sql oracle case

16
推荐指数
2
解决办法
2万
查看次数

标签 统计

case ×1

oracle ×1

sql ×1