Was ist NVL()?

Hi Leute,

habe gerade weiter unten in einem SQL-Befehl die Funktion NVL() gesehen und möchte nun wissen, was die macht.
Ich bin sehr fit in SQL, aber NVL() habe ich bisher noch nirgends gelesen - geschweigen dann verwendet :wink: Ist das SQL-Standard?

Kann mir bitte jemand helfen?

Vielen Dank
Sutti

Hallo Sutti,

NVL() scheint eine Oracle Funktion zu sein und aus meiner Sicht kein SQL-Standard:
http://www.techonthenet.com/oracle/functions/nvl.htm

Viele Grüsse
Simon

Danke Simon,

das entspricht in etwa der DECODE-Funktion bei SAPDB

Guten Rutsch ins neue Jahr
Sutti

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi!

habe gerade weiter unten in einem SQL-Befehl die Funktion
NVL() gesehen und möchte nun wissen, was die macht.
Ich bin sehr fit in SQL, aber NVL() habe ich bisher noch
nirgends gelesen - geschweigen dann verwendet :wink: Ist das
SQL-Standard?

fit und kein nvl?? :wink:

nvl ist zum ausscheiden von null-values von variablen, rückgabewerten etc. vorgesehen:

declare

var_test number;

begin
var_test := fun_blabla(xxx,yyy);
if (nvl(var_test,0) > 0) …

end;

wobei auch hier ein „var_test := nvl(fun_blabla,xxx,yyy),0);“ verwendet werden kann

warum? ein vergleich mit NULL ergibt immer NULL (auch bei boolean-vergleichen - siehe das if-stmt.)

grüße,
tomh

ps: das decode stmt. ist vergleichbar mit dem case; wenn du statt dem nvl ein decode machst, müßte es so aussehen:
var_test := decode(var_test,null,0,var_test);
var_test := nvl(var_test,0);

pps: du kannst anstatt einer number natürlich irgendeinen typ angeben …