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:
A mi tambien me pasa, ahora mismo volvi a confundir el orden de los parametros
Post a Comment