1

decodeオラクルでは、「if, then else」の方法で関数を使用できます。

たとえば、次のようになります。

DECODE(XXXX,'TEST',NULL,XXXX)。

したがって、上記は「if XXXX = 'TEST', then NULL, else XXXX」と言っています。

これで目的の結果が得られましたが、次のように記述できる短い方法 (おそらくネイティブ関数) はありますか?

DECODE(XXXX,'TEST',NULL)

基本的には、第一引数='TEST'ならNULLを出力し、そうでなければ第一引数を出力します。

NVL に少し似ていますが、NULL でない場合、NVL は最初の引数を返します。

私のステートメントのいくつかは非常に長く、関数で必要な出力を2回持つのは非常に無駄に思えるので、私はただ興味があります.

カスタム関数を作成できることは知っていますが、既にある場合は興味があります。

それが理にかなっていることを願っています!

4

1 に答える 1

4

この特定のケースでは、 NULLIF()を使用できます

SQL> ed
Wrote file afiedt.buf

  1  with x as (
  2    select 1 id, 'foo' str from dual union all
  3    select 2, 'TEST' from dual
  4  )
  5  select id,
  6         nullif( str, 'TEST' )
  7*   from x
SQL> /

        ID NULL
---------- ----
         1 foo
         2

CASE個人的には、しかし、私はより冗長な、またはより難解な組み込み関数のいくつかを使用するよりも好む傾向があります。DECODEなぜなら、将来コードを維持しなければならない人は誰でも、コードが実行しているはずです。

于 2012-11-15T22:11:41.597 に答える