日期:2014-05-16  浏览次数:20563 次

Oracle中函数使用技巧(2) - NULLIF

NULLIF 函数

功能?

通过比较表达式提供缩写的 CASE 表达式。

语法?

NULLIF?(?expression-1,?expression-2?)

参数?

expression-1????要比较的表达式。

expression-2????要比较的表达式。

用法?

NULLIF 比较两个表达式的值。

如果第一个表达式的值与第二个表达式的值相等,NULLIF 返回 NULL。

如果第一个表达式的值不等于第二个表达式的值,或者第二个表达式为 NULL,则 NULLIF 返回第一个表达式。

NULLIF 函数提供了编写某些 CASE 表达式的简便方法。

标准和兼容性?
  • SQL/92????初级特性。

  • SQL/99????核心特性。

示例?

下面的语句返回值 a:

SELECT NULLIF( 'a', 'b' )

下面的语句返回 NULL。

SELECT NULLIF( 'a', 'a' )
---------------------------------------------------------------

CASE 表达式

CASE 表达式提供条件 SQL 表达式。Case 表达式可以在能够使用表达式的任何地方使用。

CASE 表达式的语法如下:

CASE?expression
WHEN?expression
THEN?expression,?...
[?ELSE?expression?]
END

如果 CASE 语句后的表达式等于 WHEN 语句后的表达式,则返回 THEN 语句后的表达式。否则,返回 ELSE 语句后的表达式(如果它存在)。

例如,以下代码用 CASE 表达式作为 SELECT 语句的第二子句。

SELECT id,
   ( CASE name
      WHEN 'Tee Shirt' then 'Shirt'
      WHEN 'Sweatshirt' then 'Shirt'
      WHEN 'Baseball Cap' then 'Hat'
      ELSE 'Unknown'
   END ) as Type
FROM "DBA".Product

可以替换的语法如下:

CASE
WHEN?search-condition
THEN?expression,?...
[?ELSE?expression?]
END

如果满足 WHEN 语句后的搜索条件,则返回 THEN 语句后的表达式。否则,返回 ELSE 语句后的表达式(如果它存在)。

例如,以下语句用 CASE 表达式作为 SELECT 语句的第三子句,以将字符串与搜索条件相关联。

SELECT id, name,
   ( CASE
      WHEN name='Tee Shirt' then 'Sale'
      WHEN quantity >= 50  then 'Big Sale'
      ELSE 'Regular price'
FROM "DBA".Product
用于简写 CASE 表达式的 NULLIF 函数?

NULLIF 函数提供了一种以短格式写出某些 CASE 语句的方法。NULLIF 语法如下: