Saturday, October 6, 2007

El usar NVL2

NVL2 es una pequeña función aseada del SQL que pienso soy underused. Se parece a mí que podría tener un nombre mejor.

El formato es NVL2 (expr1, expr2, expr3). Qué lo hace es si expr1 es NULL, él vuelve expr3. Si expr1 NOT NULL, vuelve expr2.

IF la declaración para hacer igual parecería:

IF expr1 IS NULL 
THEN
expr3
ELSE
expr2
END IF


Tiendo para conseguir expr2 y expr3 al revés cada vez que utilizo esta función. No soy seguro porqué. Conjeturo que resuelvo mentalmente expresiones del non-NOT antes NO de expresiones.

Tan si funcionaste esta escritura:

SELECT nvl2('ABC', 'DEF', 'GHI')
FROM DUAL
/


SELECT nvl2(NULL, 'DEF', 'GHI')
FROM DUAL
/


Conseguirías esta salida:

NVL
---
DEF


1 row selected.


NVL
---
GHI


1 row selected.

1 comment:

Niko said...

A mi tambien me pasa, ahora mismo volvi a confundir el orden de los parametros

My Zimbio
KudoSurf Me!