Bonjour à tous,

En parcourant le code d'une de mes applications, je suis tombé sur celui-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
(LENGTH(REJECTED_LINE) - LENGTH(REPLACE(REJECTED_LINE,';',NULL))) / NVL(LENGTH(';'),1) )
Ce code sert au départ à vérifier le nombre de colonne dans une ligne extraite d'un fichier .csv, mais je cherche à comprendre l'intérêt de la partie située après la division.
De mon analyse je déduit que :
  • NVL sert à éviter de faire une division par 0 dans le cas ou length(';') est null
  • LENGTH(';') peut donc être null ou supérieur à 1.


L'énigme est donc :
Dans quel cas length(';') peut être null ou supérieur à 1.

J'émet une hypothèse autour de l'encodage, mais la fonction lengthb sert à indiquer le nombre d'octets d'un paramètre.
Ce pourrait-il qu'une justification de ce code tienne à une ancienne version d'oracle ?

Merci de vos éclairages.

Philippe