Conversions NVL pour différents types de données. Instructions de branchement dans la commande SELECT Description d'Oracle nvl

Nous avons évoqué les fonctions imbriquées un peu plus tôt, nous allons maintenant les examiner un peu plus en détail. Nous examinerons également les fonctions permettant de travailler avec la valeur NULL et les fonctions permettant d'implémenter l'opération de branchement dans une requête.

Fonctions imbriquées

Les fonctions imbriquées utilisent la valeur de retour d'une fonction comme paramètre d'entrée pour une autre fonction. Les fonctions renvoient toujours une seule valeur. Par conséquent, vous pouvez traiter le résultat d’un appel de fonction comme une valeur littérale lorsque vous l’utilisez comme paramètre dans un autre appel de fonction. Les fonctions de chaîne peuvent être imbriquées à n’importe quel niveau d’imbrication. Un appel de fonction ressemble à ceci

Fonction1(paramètre1, paramètre2, …) = résultat

Le remplacement d'un paramètre de fonction par un appel à une autre fonction peut entraîner des expressions telles que

F1(param1.1, F2(param2.1, param2.2, F3(param3.1)), param1.3)

Les fonctions imbriquées sont d'abord évaluées avant que leurs résultats ne soient utilisés comme valeurs d'entrée pour d'autres fonctions. Les fonctions sont évaluées du niveau d'imbrication le plus profond jusqu'au niveau supérieur de gauche à droite. L'expression précédente est exécutée comme suit

  1. La fonction F3(param1) est évaluée et la valeur de retour est utilisée comme troisième paramètre pour la fonction 2, appelons-la param2.3
  2. Ensuite, la fonction F2(param1, param2.2, param2.3) est évaluée et la valeur de retour est utilisée comme deuxième paramètre de la fonction F1 - param1.2
  3. Enfin, la fonction F1(param1, param2, param1.3) est évaluée et le résultat est renvoyé au programme appelant.

Ainsi, la fonction F3 se situe au troisième niveau d’imbrication.

Considérons la demande

sélectionnez next_day(last_day(sysdate)-7, 'tue') parmi dual ;

  1. Il existe trois fonctions dans cette requête, du niveau inférieur au niveau supérieur : SYSDATE, LAST_DAY, NEXT_DAY. La demande s'effectue comme suit
  2. La fonction SYSDATE imbriquée est exécutée. Il renvoie l’heure actuelle du système. Disons que la date actuelle est le 28 octobre 2009
  3. Ensuite, le résultat de la fonction de deuxième niveau LAST_DAY est calculé. LAST_DATE('28-OCT-2009') renvoie le dernier jour d'octobre 2009, soit le 31 octobre 2009.
  4. Ensuite, sept jours sont soustraits de cette date - il s'avère que le 24 octobre.
  5. Enfin, la fonction NEXT_DAY('24-OCT-2009', 'tue') est évaluée et la requête renvoie le dernier mardi d'octobre, qui dans notre exemple est le 27-OCT-2009.

Il est assez difficile de comprendre et de créer des expressions complexes à l’aide de nombreux appels de fonctions imbriquées, mais cela vient avec du temps et de la pratique. Vous pouvez diviser ces expressions en parties et les tester séparément. La table DUAL est très utile pour tester les requêtes et les résultats des appels de fonction. Vous pouvez tester et déboguer de petits composants, qui sont ensuite combinés en une grande expression souhaitée.

Fonctions de branchement

Les fonctions de branchement, également connues sous le nom de IF-THEN-ELSE, sont utilisées pour déterminer le chemin d'exécution en fonction de certaines circonstances. Les fonctions de branchement renvoient des résultats différents en fonction du résultat de l'évaluation de la condition. Le groupe de ces fonctions comprend des fonctions permettant de travailler avec la valeur NULL : NVL, NVL2, NULLIF et COALESCE. Et aussi les fonctions communes représentées par la fonction DECODE et l'expression CASE. La fonction DECODE est une fonction Oracle, tandis que l'expression CASE est présente dans le standard ANSI SQL.

Fonction NVL

La fonction NVL teste la valeur d'une colonne ou d'une expression de n'importe quel type de données par rapport à NULL. Si la valeur est NULL, elle renvoie une valeur par défaut alternative non NULL, sinon elle renvoie la valeur d'origine.

La fonction NVL a deux paramètres obligatoires et la syntaxe est NVL(original, ifnull) où original est la valeur d'origine à vérifier et ifnull est le résultat renvoyé par la fonction si la valeur d'origine est NULL. Le type de données des paramètres ifnull et original doit être compatible. Autrement dit, soit le type de données doit être le même, soit il doit être possible de convertir implicitement les valeurs d'un type à un autre. La fonction NVL renvoie une valeur du même type de données que le type de données du paramètre d'origine. Considérons trois requêtes

Requête 1 : sélectionnez nvl(1234) dans dual ;

Requête 2 : sélectionnez nvl(null, 1234) dans dual ;

Requête 3 : sélectionnez nvl(substr('abc', 4), 'Aucune sous-chaîne n'existe') à partir de dual ;

Étant donné que la fonction NVL nécessite deux paramètres, la requête 1 renverra l'erreur ORA-00909 : nombre d'arguments non valide. La requête 2 renverra 1234 car la valeur NULL est vérifiée et elle est NULL. La troisième requête utilise une fonction SUBSTR imbriquée qui tente d'extraire le quatrième caractère d'une chaîne de trois caractères, renvoyant NULL, et la fonction NVL renvoyant la chaîne « Aucune chaîne n'existe ».

La fonction NVL est très utile lorsque vous travaillez avec des nombres. Il est utilisé pour convertir les valeurs NULL en 0 afin que les opérations arithmétiques sur les nombres ne renvoient pas NULL

Fonction NVL2

La fonction NVL2 offre plus de fonctionnalités que NVL, mais sert également à gérer les valeurs NULL. Il teste la valeur d'une colonne ou d'une expression de n'importe quel type par rapport à NULL. Si la valeur n'est pas NULL, alors le deuxième paramètre est renvoyé, sinon le troisième paramètre est renvoyé, contrairement à la fonction NVL, qui renvoie dans ce cas la valeur d'origine.

La fonction NVL2 a trois paramètres obligatoires et la syntaxe est NVL2 (original, ifnotnull, ifnull), où original est la valeur testée, ifnotnull est la valeur renvoyée si l'original n'est pas NULL et ifnull est la valeur renvoyée si l'original est NULL. Les types de données des paramètres ifnotnull et ifnull doivent être compatibles et ne peuvent pas être de type LONG. Le type de données renvoyé par la fonction NVL2 est égal au type de données du paramètre ifnotnull. Regardons quelques exemples

Requête 1 : sélectionnez nvl2(1234, 1, 'a string') dans dual ;

Requête 2 : sélectionnez nvl2 (null, 1234, 5678) dans dual ;

Requête 3 : sélectionnez nvl2(substr('abc', 2), 'Not bc', 'No substring') à partir de dual ;

Le paramètre ifnotnull dans la requête 1 est un nombre et le paramètre ifnull est une chaîne. Étant donné que les types de données sont incompatibles, l'erreur « ORA-01722 : numéro invalide » est renvoyée. La deuxième requête renvoie le paramètre ifnull, puisque l'original est NULL et le résultat sera 5678. La troisième requête utilise la fonction SUBSTR qui renvoie 'bc' et appelle NVL2('bc','Not bc','No substring') - qui renvoie le paramètre ifnotnull – 'Not bc'.

Fonction NULLIF

La fonction NULLIF vérifie si deux valeurs sont identiques. S'ils sont identiques, NULL est renvoyé, sinon le premier paramètre est renvoyé. La fonction NULLIF a deux paramètres obligatoires et la syntaxe est NULLIF(ifunequal, comparative_item). La fonction compare deux paramètres et s'ils sont identiques, NULL est renvoyé, sinon le paramètre est inégal. Considérons les demandes

Requête 1 : sélectionnez nullif(1234, 1234) dans dual ;

La première requête renvoie NULL puisque les paramètres sont identiques. Les chaînes de la requête 2 ne sont pas converties en date, mais comparées en tant que chaînes. Étant donné que les chaînes sont de longueurs différentes, le paramètre ifunequal est renvoyé le 24 juillet 2009.

Dans la figure 10-4, la fonction NULLIF est imbriquée dans la fonction NVL2. La fonction NULLIF utilise à son tour les fonctions SUBSTR et UPPER dans le cadre d'une expression dans le paramètre ifunequal. La colonne EMAIL est comparée à cette expression qui renvoie la première lettre du prénom combinée au nom de famille pour les salariés dont le prénom comporte 4 caractères. Lorsque ces valeurs sont égales, NULLIF renverra NULL, sinon il renverra la valeur du paramètre ifunequal. Ces valeurs sont utilisées comme paramètre pour la fonction NVL2. NVL2 renvoie à son tour une description indiquant si les éléments comparés correspondent ou non.

Figure 10-4 – Utilisation de la fonction NULLIF

Fonction COALESCE

La fonction COALESCE renvoie la première valeur non NULL de la liste de paramètres. Si tous les paramètres sont NULL, alors NULL est renvoyé. La fonction COALESCE a deux paramètres obligatoires et un nombre quelconque de paramètres facultatifs et la syntaxe est COALESCE(expr1, expr2, ..., exprn) où le résultat sera expr1 si la valeur de expr 1 n'est pas NULL, sinon le résultat sera expr2 si ce n'est pas NULL, etc. COALESCE a la même signification que les fonctions NVL imbriquées

COALESCE(expr1, expr2) = NVL(expr1, expr2)

COALESCER(expr1, expr2, expr3) = NVL(expr1,NVL(expr2, expr3))

Le type de données de la valeur renvoyée si une valeur non NULL est trouvée est égal au type de données de la première valeur non NULL. Pour éviter l'erreur « ORA-00932 : types de données incohérents », tous les paramètres non NULL doivent être compatibles avec le premier paramètre non NULL. Regardons trois exemples

Requête 1 : sélectionnez coalesce(null, null, null, 'a string') à partir de dual ;

Requête 2 : sélectionnez coalesce (null, null, null) à partir de dual ;

Requête 3 : sélectionnez coalesce(substr('abc', 4), 'Not bc', 'No substring') from dual ;

La requête 1 renvoie le quatrième paramètre : une chaîne, puisqu'il s'agit du premier paramètre non NULL. La requête deux renvoie NULL car tous les paramètres sont NULL. La requête 3 évalue le premier paramètre, obtient la valeur NULL et renvoie le deuxième paramètre puisqu'il s'agit du premier paramètre non NULL.

Les paramètres de la fonction NVL2 peuvent prêter à confusion si vous êtes déjà familier avec la fonction NVL. NVL(original, ifnull) renvoie l'original si la valeur n'est pas NULL, sinon ifnull. NVL2 (original, ifnotnull, ifnull) renvoie ifnotnull si l'original n'est pas NULL sinon ifnull. La confusion vient du fait que le deuxième paramètre de la fonction NVL est ifnull, alors que la fonction NVL2 est ifnotnull. Ne vous fiez donc pas à la position du paramètre dans la fonction.

Fonction DÉCODAGE

La fonction DECODE implémente la logique if-then-else en testant l'égalité des deux premiers paramètres et en renvoyant une troisième valeur s'ils sont égaux ou une valeur différente s'ils ne sont pas égaux. La fonction DECODE a trois paramètres obligatoires et la syntaxe est DECODE(expr1, comp1, iftrue1, , ). Ces paramètres sont utilisés comme indiqué dans l'exemple de pseudocode suivant

SI expr1=comp1 puis renvoie iftrue1

Sinon, si expr1=comp2, retourne iftrue2

Sinon, si exprN = compN, retournez iftrueN

Sinon, retournez NULL|iffalse ;

Tout d’abord, expr1 est comparé à comp1. S'ils sont égaux, iftrue1 est renvoyé. Si expr1 n'est pas égal à comp1, alors ce qui se passe ensuite dépend de la spécification ou non des paramètres comp2 et iftrue2. Si elle est donnée, la valeur de expr1 est comparée à comp2. Si les valeurs sont égales, alors iftrue2 est renvoyé. Sinon, s'il existe des paires de paramètres, compN, iftrueN, expr1 et compN sont comparés et, s'ils sont égaux, iftrueN est renvoyé. Si aucune correspondance n'a été trouvée dans un ensemble de paramètres, alors soit iffalse si ce paramètre a été spécifié, soit NULL est renvoyé.

Tous les paramètres de la fonction DECODE peuvent être des expressions. Le type de la valeur de retour est égal au type du premier élément de validation - le paramètre comp 1. Expression expr 1 est implicitement converti en type de données du paramètre comp1. Tous les autres paramètres de composition disponibles 1...compN sont également implicitement convertis en type comp 1. DECODE traite une valeur NULL comme égale à une autre valeur NULL, c'est-à-dire si expr1 est NULL et comp3 est NULL et comp2 n'est pas NULL, alors iftrue3 est renvoyé. Regardons quelques exemples

Requête 1 : sélectionnez decode(1234, 123, « 123 est une correspondance ») à partir de dual ;

Requête 2 : sélectionnez decode(1234, 123, « 123 est une correspondance », « Aucune correspondance ») à partir de dual ;

Requête 3 : sélectionnez decode('search', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr('2search', 2, 6), 'true4', ' false') de dual ;

La première requête compare les valeurs 1234 et 123. Comme elles ne sont pas égales, iftrue1 est ignoré et puisque la valeur iffalse n'est pas définie, NULL est renvoyé. La requête deux est identique à la requête 1 sauf que la valeur iffalse est définie. Puisque 1234 n’est pas égal à 123, il renvoie iffalse – « Aucune correspondance ». La troisième requête vérifie que les valeurs des paramètres correspondent à la valeur de recherche. Les paramètres comp1 et comp2 ne sont pas égaux à « recherche », donc les résultats de iftrue1 et iftrue2 sont ignorés. Une correspondance est trouvée dans la troisième opération de comparaison de l'élément comp3 (position du paramètre 6) et la valeur de iftrue3 (paramètre 7) est renvoyée et est égale à « true3 ». Puisqu’une correspondance est trouvée, aucun calcul n’est effectué. Autrement dit, malgré le fait que la valeur de comp4 (paramètre 8) correspond également à expr1, cette expression n'est jamais calculée puisque la correspondance a été trouvée lors de la comparaison précédente.

Expression de CAS

Tous les langages de programmation de troisième et quatrième génération implémentent la construction de cas. Comme la fonction DECODE, l'expression CASE vous permet d'implémenter une logique if-then-else. Il existe deux options pour utiliser l'expression CASE. Une simple expression CASE configure l'élément source pour qu'il soit comparé une fois, puis répertorie toutes les conditions de test nécessaires. CASE complexe (recherché) évalue les deux instructions pour chaque condition.

L'expression CASE a trois paramètres obligatoires. La syntaxe de l'expression dépend du type. Pour une simple expression CASE, cela ressemble à ceci

CAS expr_recherche

QUAND expr_comparaison1 ALORS iftrue1

)

La fonction TRUNC renvoie le nombre n, tronqué à m décimales. Le paramètre m ne peut pas être spécifié ; dans ce cas, n est tronqué à un nombre entier.

SÉLECTIONNEZ TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

COFFRE(100.25678, 2) X4

DU DOUBLE

Fonction SIGNE(n)

La fonction SIGN détermine le signe d'un nombre. Si n est positif, alors la fonction renvoie 1. Si n est négatif, elle renvoie -1. S'il est égal à zéro, alors 0 est renvoyé. Par exemple :

SÉLECTIONNER SIGNE(100.22) X1, SIGNE(-100.22) X2, SIGNE(0) X3

DU DOUBLE

Une caractéristique intéressante de cette fonction est la possibilité de transmettre m égal à zéro sans provoquer d'erreur de division par 0.

Fonction PUISSANCE(n, m)

La fonction POWER élève le nombre n à la puissance m. Le degré peut être fractionnaire et négatif, ce qui élargit considérablement les capacités de cette fonction.

SÉLECTIONNEZ PUISSANCE (10, 2) X1, PUISSANCE (100, 1/2) X2,

PUISSANCE (1000, 1/3) X3, PUISSANCE (1000, -1/3) X4

DU DOUBLE

X1 X2 X3 X4
100 10 10 0,1

Dans certains cas, une exception peut se produire lors de l'appel de cette fonction. Par exemple:

SÉLECTIONNER LA PUISSANCE (-100, 1/2) X2

DU DOUBLE

Dans ce cas, une tentative est effectuée pour calculer la racine carrée d'un nombre négatif, ce qui entraînera une erreur ORA-01428 « Argument hors plage ».

Fonction SQRT(n)

Cette fonction renvoie la racine carrée de n. Par exemple:

SÉLECTIONNER SQRT(100)X

DU DOUBLE

Fonctions EXP(n) et LN(n)

La fonction EXP élève e à la puissance n et la fonction LN calcule le logarithme népérien de n (n doit être supérieur à zéro). Exemple:

SÉLECTIONNER EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

Fonction NVL

La fonction NVL est généralement utilisée le plus souvent. La fonction reçoit deux paramètres : NVL(expr1, expr2). Si le premier paramètre expr1 n'est pas NULL, alors la fonction renvoie sa valeur. Si le premier paramètre est NULL, alors la fonction renvoie à la place la valeur du deuxième paramètre expr2.

Regardons un exemple pratique. Le champ COMM de la table EMP peut contenir des valeurs NULL. Lors de l'exécution d'une requête telle que :

SELECT EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM

DE SCOTT.EMP

la valeur NULL sera remplacée par zéro. Notez que lorsqu'une valeur est générée à l'aide d'une fonction, un alias lui est attribué. Les résultats de la requête ressembleront à :

EMPNO ÉNOM COMM NVL_COMM
7369 FORGERON 0
7499 ALLEN 300 300
7521 SALLE 500 500
7566 JONES 0
7654 MARTIN 1400 1400
7698 BLAKE 0
7782 CLAIRE 0
7839 ROI 0
7844 TOURNEUR 0 0
7900 JAMES 0
7902 GUÉ 0
7934 MEUNIER 0

Fonction CEIL(n)

La fonction CEIL renvoie le plus petit entier supérieur ou égal au nombre n passé en paramètre. Par exemple:

SÉLECTIONNER CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4

DU DOUBLE

Fonction TRUNC(n [,m])

La fonction TRUNC renvoie le nombre n, tronqué à m décimales. Le paramètre m ne peut pas être spécifié ; dans ce cas, n est tronqué à un nombre entier.

SÉLECTIONNEZ TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

COFFRE(100.25678, 2) X4

DU DOUBLE

Fonction SIGNE(n)

La fonction SIGN détermine le signe d'un nombre. Si n est positif, alors la fonction renvoie 1. Si n est négatif, elle renvoie -1. S'il est égal à zéro, alors 0 est renvoyé. Par exemple :

SÉLECTIONNER SIGNE(100.22) X1, SIGNE(-100.22) X2, SIGNE(0) X3

DU DOUBLE

Une caractéristique intéressante de cette fonction est la possibilité de transmettre m égal à zéro sans provoquer d'erreur de division par 0.

Fonction PUISSANCE(n, m)

La fonction POWER élève le nombre n à la puissance m. Le degré peut être fractionnaire et négatif, ce qui élargit considérablement les capacités de cette fonction.

SÉLECTIONNEZ PUISSANCE (10, 2) X1, PUISSANCE (100, 1/2) X2,

PUISSANCE (1000, 1/3) X3, PUISSANCE (1000, -1/3) X4

DU DOUBLE

X1 X2 X3 X4
100 10 10 0,1

Dans certains cas, une exception peut se produire lors de l'appel de cette fonction. Par exemple:

SÉLECTIONNER LA PUISSANCE (-100, 1/2) X2

DU DOUBLE

Dans ce cas, une tentative est effectuée pour calculer la racine carrée d'un nombre négatif, ce qui entraînera une erreur ORA-01428 « Argument hors plage ».

Fonction SQRT(n)

Cette fonction renvoie la racine carrée du nombre n. Par exemple:

SÉLECTIONNER SQRT(100)X

DU DOUBLE

Fonctions EXP(n) et LN(n)

La fonction EXP élève e à la puissance n et la fonction LN calcule le logarithme népérien de n (n doit être supérieur à zéro). Exemple:

SÉLECTIONNER EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

Fonction TO_CHAR avec des nombres

Fonctions de conversion de données vers d'autres types de données. TO_CHAR(number) convertit un nombre en texte. TO_NUMBER(string) convertit le texte en nombre.

SELECT TO_CHAR (123) FROM DUAL renverra la chaîne 123, SELECT TO_NUMBER (`12345") FROM DUAL renverra le nombre 12345.

Travaux de laboratoire. Modification du format du numéro de sortie

Modifications du format des valeurs numériques dans Oracle SQL, la fonction TO_CHAR pour travailler avec des valeurs numériques.

Exercice:

Écrivez une requête qui afficherait des informations sur le prénom, le nom et le salaire des employés de la table hr.employees dans le format indiqué dans la Fig. 3.4-1 :

Riz. 3.4 -1

Dans ce cas, les données doivent être triées de manière à ce que les lignes des employés ayant le salaire le plus élevé soient affichées en premier.

Note:

Quelques valeurs de salaire dans la Fig. 3.4-1 ont été modifiés, ils peuvent donc ne pas être les mêmes que vos valeurs.

Solution:

SELECT first_name AS "First Name", last_name Comme "Last Name", TO_CHAR (SALARY, "L999999999.99") Comme "Salaire" FROM hr.employees ORDER BY SALARY DESC.

Fonctions TO_NUMBER et TO_DATE

Fonction pour convertir une chaîne en date TO_DATE (chaîne, format). Les valeurs de format possibles ont déjà été discutées ci-dessus, je vais donc donner plusieurs exemples d'utilisation de cette fonction. Exemples:

SÉLECTIONNER TO_DATE("01/01/2010", `JJ.MM.AAAA") DEPUIS DUAL renverra la date « 01/01/2010 » ;

SÉLECTIONNER TO_DATE("01.JAN.2010", `JJ.MON.AAAA") DEPUIS DUAL renverra la date « 01/01/2009 » ;

SÉLECTIONNER TO_DATE("15-01-10", `JJ-MM-AA") DEPUIS DUAL renverra la date « 15/01/2010 ».

Fonction pour convertir une chaîne en valeur numérique TO_NUMBER (chaîne, format). Les valeurs de format les plus courantes sont répertoriées dans le tableau, examinons donc l'utilisation de cette fonction à l'aide d'exemples. Exemples:

SÉLECTIONNER TO_NUMBER(`100") DEPUIS DUAL renverra le nombre 100 SELECT TO_NUMBER ("0010.01", "9999D99") DEPUIS DUAL renverra le nombre 10.01 ;

SÉLECTIONNER TO_NUMBER("500 000", "999G999") DEPUIS DUAL renverra le nombre 500000.

Élément RR au format date

L'élément de format datetime RR est similaire à l'élément de format datetime YY, mais il offre une flexibilité supplémentaire pour stocker les valeurs de date dans d'autres siècles. L'élément de format datetime RR permet de stocker les dates du 20e siècle au 21e siècle en spécifiant uniquement les deux derniers chiffres de l'année.

Si les deux derniers chiffres de l'année en cours sont compris entre 00 et 49, l'année renvoyée comporte les mêmes deux premiers chiffres que l'année en cours.

Si les deux derniers chiffres de l'année en cours sont compris entre 50 et 99, alors les 2 premiers chiffres de l'année renvoyée sont supérieurs de 1 aux 2 premiers chiffres de l'année en cours.

Si les deux derniers chiffres de l'année en cours sont compris entre 00 et 49, alors les 2 premiers chiffres de l'année renvoyée sont 1 de moins que les 2 premiers chiffres de l'année en cours.

Si les deux derniers chiffres de l'année en cours sont compris entre 50 et 99, alors l'année renvoyée comporte les mêmes deux premiers chiffres que l'année en cours.

Fonction NVL

La fonction NVL est généralement utilisée le plus souvent. La fonction reçoit deux paramètres : NVL (expr1, expr2). Si le premier paramètre expr1 n'est pas NULL, alors la fonction renvoie sa valeur. Si le premier paramètre est NULL, alors la fonction renvoie à la place la valeur du deuxième paramètre expr2.

Exemple : Sélectionnez NVL (supplier_city, n/a") parmi les fournisseurs :

L'instruction SQL ci-dessus renverra n/" si le champ supplier_city contient une valeur nulle. Sinon, elle renverra la valeur supplier_city.

Un autre exemple d'utilisation de la fonction NVL dans Oracle/PLSQL est :

sélectionnez supplier_id, NVL (supplier_desc, supplier_name) parmi les fournisseurs.

Cette instruction SQL renverra Nom du fournisseur champ si fournisseur_desc contient une valeur nulle. sinon il reviendra fournisseur_desc.

Dernier exemple : L'utilisation de la fonction NVL dans Oracle/PLSQL consiste à : sélectionner NVL(commission, 0) dans les ventes ;

Cette instruction SQL a renvoyé la valeur 0 si commission Le champ contient une valeur nulle. sinon il serait restitué commissions champ.

Conversions NVL pour différents types de données

Pour convertir une valeur nulle en valeur réelle, utilisez la fonction NVL : NVL ( expression1, expression2), Où:

expression1- La valeur originale ou calculée, qui peut être indéfinie.

expression2- La valeur qui remplace la valeur non définie.

Note: La fonction NVL peut être utilisée pour convertir n'importe quel type de données, mais le résultat sera toujours du même type que celui expression1.

Conversion NVL pour divers types:

NUMÉRO - NVL (colonne numérique, 9).

CHAR ou VARCHAR2 - NVL (caractères|colonne,"Pas disponible").

Travaux de laboratoire. Utilisation de la fonction NVL

Fonction NVL pour travailler avec des valeurs nulles dans Oracle SQL.

Exercice:

Écrivez une requête qui affiche les informations sur le prénom et le nom de l'employé provenant de la table hr.employees., ainsi que le taux de commission (colonne COMMISSION_PCT) pour l'employé. Dans ce cas, pour les salariés pour lesquels la commission n'est pas définie, il faut afficher la valeur 0. Le résultat de la demande doit être tel qu'indiqué dans la Fig. 3.5-1.

Riz. 3.5 -1 (valeurs affichées à partir de la ligne 51)

Solution:

Le code de requête correspondant pourrait ressembler à ceci :

SELECT first_name AS "First Name", last_name As "Last Name", NVL (COMMISSION_PCT, 0) As "Commission Rate" FROM hr.employees.




Haut