Maison >base de données >Oracle >Explication détaillée des exemples de fonctions nvl() et nvl2() dans Oracle

Explication détaillée des exemples de fonctions nvl() et nvl2() dans Oracle

WBOY
WBOYavant
2022-08-15 18:35:182672parcourir

Cet article vous apporte des connaissances pertinentes sur Oracle La fonction de la fonction NVL est de convertir les valeurs nulles et de renvoyer le nom de la colonne de réponse ou l'expression selon que la valeur de la première expression est nulle. L'article suivant vous présente principalement. aux informations pertinentes sur les fonctions nvl() et nvl2() dans Oracle, j'espère que cela vous sera utile.

Explication détaillée des exemples de fonctions nvl() et nvl2() dans Oracle

Tutoriel recommandé : "Tutoriel vidéo Oracle"

Explication détaillée des fonctions nvl() et nvl2() dans Oracle :

  • La fonction nvl(expression1, expression2) renvoie le paramètre 1 ou le paramètre selon que le paramètre 1 est nul. La valeur de 2 ;
  • La fonction nvl2(expression1, expression2, expression3) renvoie la valeur du paramètre 2 ou du paramètre 3 selon que le paramètre 1 est nul.

1.nvl : Renvoie la valeur du paramètre 1 ou du paramètre 2 selon que le paramètre 1 est nul

[Format de la fonction] : nvl(expression1,expression2)

[Description de la fonction] :

  • Si la valeur de expression1 est null, Alors la fonction renvoie expression2;
  • Si la valeur de expression1 n'est pas nulle, la fonction renvoie expression1;
  • Si les valeurs de expression1 et expression2 sont toutes deux nulles, la fonction renvoie null.

【Remarque spéciale】 : Les paramètres expression1 et expression2 peuvent être de type caractère, de type numérique ou de type date, mais les types de paramètres expression1 et expression2 doivent être cohérents.

[Exemple d'affichage 1] : la valeur de l'expression1 est nulle :

expression2 est un type de caractère :

select nvl(null,'ABCD') from dual;        --返回:ABCD
select nvl(null,'abcd') from dual;        --返回:abcd
select nvl(null,'12345') from dual;        --返回:12345

expression2 est un type numérique :

select nvl(null,12345) from dual;        --返回:12345
select nvl(null,00000) from dual;        --返回:0
select nvl(null,-12345) from dual;        --返回:-12345
select nvl(null,123.45) from dual;        --返回:123.45
select nvl(null,-123.45) from dual;        --返回:-123.45

expression2 est un type de date et d'heure :

select nvl(null,sysdate) from dual;        --返回:2022/2/25 11:54:18
select nvl(null,to_date('2022/2/25 11:54:18','yyyy-mm-dd hh24:mi:ss')) from dual;                        --返回:2022/2/25 11:54:18
select nvl(null,to_date('2022/2/25','yyyy-mm-dd')) from dual;        --返回:2022/2/25
select nvl(null,to_date('2022','yyyy')) from dual;        --返回:2022/2/1

[Exemple d'affichage 2] : valeur de l'expression1 Non null :

expression1 est un type de caractère :

select nvl('ABCD','abcd') from dual;        --返回:ABCD
select nvl('abcd','ABCD') from dual;           --返回:abcd
select nvl('12345','54321') from dual;        --返回:12345

expression1 est un type numérique :

select nvl(12345,null) from dual;        --返回:12345
select nvl(00000,11111) from dual;        --返回:0
select nvl(-12345,null) from dual;        --返回:-12345
select nvl(123.45,-123.45) from dual;        --返回:123.45
select nvl(-123.45,123.45) from dual;        --返回:-123.45

expression1 est un type de date et d'heure :

select nvl(sysdate,null) from dual;        --返回:2022/2/25 12:18:23
select nvl(to_date('2022/2/25 12:18:23','yyyy-mm-dd hh24:mi:ss'),null) from dual;                        --返回:2022/2/25 12:18:23
select nvl(to_date('2022/2/25','yyyy-mm-dd'),null) from dual;        --返回:2022/2/25
select nvl(to_date('2022','yyyy'),null) from dual;        --返回:2022/2/1

[Exemple d'affichage trois] : les valeurs expression1 et expression2​​sont toutes deux nulles :

select nvl(null,null) from dual;        --返回空值
select nvl('',null) from dual;        --返回空值
select nvl(null,'') from dual;        --返回空值
select nvl('','') from dual;        --返回空值

2 .nvl2 : Renvoie la valeur du paramètre 2 ou du paramètre 3 selon que le paramètre 1 est nul

[Format de la fonction] : nvl2(expression1, expression2, expression3)

[Description de la fonction] :

  • Si la valeur de expression1 n'est pas nulle, alors Cette fonction renvoie la valeur expression2 ;
  • Si la valeur expression1 est nulle, la fonction renvoie la valeur expression3 ;
  • Si les valeurs expression1, expression2 et expression3 sont toutes nulles, la fonction renvoie null.

[Remarque spéciale] : Le type de

  • expression1 n'a pas besoin d'être cohérent avec les types d'expression2 et d'expression3
  • Les types d'expression2 et d'expression3 doivent être cohérents autant que possible, s'ils sont incohérents, expression3 sera automatiquement convertie lorsque expression1 est nulle. C'est le type d'expression2. Si les deux types de données ne peuvent pas être convertis, une erreur sera signalée.

【Exemple Show 1】 : La valeur de expression1 n'est pas nulle :

expression2 et expression3 sont tous deux des types de caractères :

select nvl2(0,'ABCD','abcd') from dual;        --返回:ABCD
select nvl2('a','ABCD','1234') from dual;        --返回:ABCD
select nvl2(sysdate,'1234','abcd') from dual;        --返回:1234

expression2 et expression3 sont tous deux des types numériques :

select nvl2(0,12345,54321) from dual;        --返回:12345
select nvl2('a',123.45,543.21) from dual;        --返回:123.45
select nvl2(sysdate,-12345,-54321) from dual;        --返回:-12345

les types de données expression2 et expression3 sont incohérents :

Remarque : A ce moment, expression1 a une valeur, donc la fonction renvoie directement la valeur de expression2 Même si le type d'expression3 ne peut pas être converti en type d'expression2, aucune erreur ne sera signalée.

select nvl2(0,'ABCD',54321) from dual;        --返回:ABCD
select nvl2('a','abcd',543.21) from dual;        --返回:abcd
select nvl2(sysdate,'12345',-54321) from dual;        --返回:12345

[Exemple d'affichage 2] : la valeur de l'expression1 est nulle :

expression2 et expression3 sont tous deux de type caractère :

select nvl2(null,'ABCD','abcd') from dual;        --返回:abcd
select nvl2('','ABCD','1234') from dual;        --返回:1234

expression2 et expression3 sont toutes deux de type numérique :

select nvl2(null,12345,54321) from dual;        --返回:54321
select nvl2('',123.45,543.21) from dual;        --返回:543.21

les types de données expression2 et expression3 sont incohérents :

Remarque : À ce stade, la valeur de expression1 est nulle, donc la fonction renverra la valeur de expression3 Si le type d'expression3 ne peut pas être converti en type d'expression2, une erreur sera signalée.

select nvl2(null,'ABCD',54321) from dual;        --返回:54321
select nvl2('','abcd',543.21) from dual;        --返回:543.21
select nvl2('',543.21,'abcd') from dual;        --执行报错
select nvl2(null,'abcd',sysdate) from dual;        --返回:25-2月 -22
select nvl2(null,sysdate,'abcd') from dual;        --执行报错

[Exemple d'affichage trois] : expression1 est nulle et la valeur expression2 ou expression3 est nulle :

select nvl2(null,null,'123') from dual;        --返回:123
select nvl2(null,'abc',null) from dual;        --返回:空值
select nvl2(null,null,null) from dual;        --返回:空值
select nvl2('','','') from dual;        --返回:空值

Tutoriel recommandé : "Tutoriel vidéo Oracle"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer