Oracle 常用函数 详解(9)

                   select decode(1234,123,123,'No match') from dual; --‘No match'ORA-01722: invalid number 

      CASE表达式

CASE表达式在所有第三和第四代编程语言都可以实现。和DECODE函数一样,CASE表达式使用if-then-else条件逻辑。CASE表达式有两个变体。简单的CASE表达式列出条件搜索项一次,由每个比较表达式来测试与搜索项的相等性。搜索的CASE表达式列出每个比较表达式的单独条件。

CASE表达式至少使用三个强制参数,但可以使用更多参数。其语法取决于是使用简单CASE表达式还是使用搜索的CASE表达式。

简单CASE表达式的语法:

CASE search_expr

WHEN comparison_expr1 THEN iftrue1

[WHEN comparison_expr2 THEN iftrue2

...

WHEN comparison_exprN THEN iftureN]

[ELSE iffalse]

END

简单CASE表达式包含在CASE...END代码块内,由至少一个WHEN...THEN语句组成。在最简单的情况下——只有一个WHEN...THEN语句,search_exprcomparison_expr1进行比较。如果它们相等,姥返回结果iftrue1。如果不相等,那么返回一个空值,除非定义了ELSE组件,这个情况返回默认的iffalse值。当CASE表达式中有多个WHEN...THEN语句时,就会不断搜索匹配的比较表达式,直到找到匹配项为止。

搜索、比较和结果参数可以是列值、表达式或都字面值,但必须都是相同数据类型。

select

case substr(1234,1,3)

when '134' then '1234 is a match'

when '1235' then '1235 is a match'

when concat('1','23') then concat('1','23')|| ' is a match'

else 'no match'

end

from dual;

搜索的CASE表达式的语法:

CASE

WHEN condition1 THEN iftrue1

[WHEN condition2 THEN iftrue2

...

WHEN conditionN THEN iftrueN]

[ELSE iffalse]

END

搜索的CASE表达式包含在CASE...END代码块内,由至少一个WHEN...THEN语句组成。在最简单的情况下——只有一个WHEN...THEN语句,计算condition1;如果它是true,那么返回结果iftrue1。如果不是,那么就返回一个空值,除非定义了ELSE组件,这种情况下,返回默认的iffalse值。当CASE表达式中有多个WHEN...THEN语句时,就会不断搜索匹配的比较表达式,直到找到匹配项为止。

select

case

when length(substr(1234,1,3)) = 1 then 'length of substring is 1'

when length(substr(1234,1,3)) = 2 then 'length of substring is 2'

when length(substr(1234,1,3)) = 3 then 'length of substring is 3'

else 'no match'

end

from dual;

参考:OCP/OCA认证考试指南全册 Oracle 11g(1Z0-051,1Z0-052,1Z0-053)中文完整版PDF 下载见

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/078f840cb4be3c96a03d9f35207f0393.html