Donnerstag, Januar 06, 2011

NULLIF()

Bei Jonathan Lewis habe ich gerade die NULLIF-Funktion entdeckt, mit der man “divide by zero”-Fehler vermeiden kann:

SQL> r
  1  with
  2  test_data as
  3  ( select rownum rn
  4         , rownum - 1 rn2
  5      from dual
  6   connect by level <= 5
  7  )
  8  select rn/rn2
  9*   from test_data
select rn/rn2
         *
FEHLER in Zeile 8:
ORA-01476: Divisor ist Null

SQL> r
  1  with
  2  test_data as
  3  ( select rownum rn
  4         , rownum - 1 rn2
  5      from dual
  6   connect by level <= 5
  7  )
  8  select rn/NULLIF(rn2, 0)
  9*   from test_data

RN/NULLIF(RN2,0)
----------------

               2
             1,5
      1,33333333
            1,25

NULLIF liefert NULL, wenn der erste Parameter dem zweiten Parameter (hier also 0) entspricht, sonst aber den ersten Parameter.

Keine Kommentare:

Kommentar veröffentlichen