TO_BINARY_DOUBLE |
Binaire double |
|---|---|
| Oracle Database SQL | Oracle 10g Release 1 (version 10.1) ou supérieure |
Syntaxe
| TO_BINARY_DOUBLE(expr [ DEFAULT return_value ON CONVERSION ERROR ] [, fmt [, 'nlsparam' ] ]) |
Paramètres
| Nom | Description |
|---|---|
| expr | Ce paramètre permet de spécifier l'expression ou la valeur à convertir en type BINARY_DOUBLE. L'expression peut être une constante, une colonne ou une expression calculée, et doit représenter une donnée numérique ou textuelle convertible en double précision flottante. |
| DEFAULT return_value ON CONVERSION ERROR | Ce paramètre permet de définir une valeur de retour par défaut qui sera utilisée si la conversion de expr en BINARY_DOUBLE échoue, par exemple en raison d'un format incorrect ou d'une donnée invalide. Cette clause évite que l'instruction génère une erreur et permet de gérer les exceptions directement dans la requête. |
| fmt | Ce paramètre permet de préciser le format d'entrée attendu si expr est de type caractère, comme un format numérique personnalisé (par exemple '9999.99'). Cela guide Oracle dans l'interprétation des données textuelles avant la conversion en BINARY_DOUBLE. |
| 'nlsparam' | Ce paramètre permet de définir des paramètres linguistiques ou régionaux NLS (National Language Support) pour la conversion, comme le séparateur décimal ou le symbole monétaire. Il est particulièrement utile pour garantir que les valeurs soient correctement interprétées selon les conventions locales. |
Description
Cette fonction permet de convertir une expression en un type de donnée BINARY_DOUBLE, un format flottant en double précision.
Remarques
- Précision élevée : La fonction TO_BINARY_DOUBLE convertit les valeurs en format flottant double précision IEEE 754, offrant une précision de 15 à 17 chiffres significatifs. Cela la rend particulièrement adaptée aux calculs scientifiques et financiers nécessitant une exactitude accrue sur de grands nombres.
- Conversion explicite : Même si Oracle peut effectuer des conversions implicites, TO_BINARY_DOUBLE permet d'indiquer clairement que la valeur doit être traitée comme un nombre à double précision, ce qui rend le code plus lisible et évite des conversions automatiques imprévisibles.
- Tolérance aux erreurs avec DEFAULT p;: L'option DEFAULT return_value ON CONVERSION ERROR est un mécanisme puissant pour éviter qu'une erreur de conversion interrompe l'exécution. Elle permet de fournir une valeur de secours, ce qui est très utile dans les traitements par lots ou les imports de données hétérogènes.
- Adapté aux données textuelles : Grâce au paramètre fmt, la fonction peut interpréter correctement des valeurs entreposées sous forme de texte avec un format numérique particulier, ce qui est courant lors de migrations de données ou d'intégrations depuis des fichiers externes.
- Gestion des paramètres linguistiques : Avec 'nlsparam', il est possible de traiter correctement les formats régionaux, comme l'utilisation d'une virgule comme séparateur décimal en Europe ou d'un point en Amérique du Nord. Cela réduit le risque d'erreurs dues à des différences de conventions locales.
- Compatibilité ascendante : Introduite dès Oracle 10g Release 1, cette fonction est disponible sur toutes les versions récentes d'Oracle, ce qui la rend sûre à utiliser dans des projets devant fonctionner sur des environnements variés.
- Précision vs NUMBER : Comparée au type NUMBER, BINARY_DOUBLE offre des performances meilleures dans certains calculs flottants, mais il faut garder à l'esprit que la précision est limitée par la norme IEEE 754, ce qui peut entraîner de légères approximations.
- Impact sur les performances - L'utilisation de BINARY_DOUBLE peut réduire le temps de traitement dans des calculs intensifs, notamment en exploitant l'optimisation matérielle des processeurs pour les opérations flottantes, ce qui n'est pas toujours le cas avec NUMBER.
- Sensibilité aux valeurs spéciales : BINARY_DOUBLE prend en charge les valeurs spéciales IEEE comme NaN (Not a Number), +Infinity et -Infinity, ce qui permet de gérer des cas extrêmes mais nécessite une attention particulière pour éviter des résultats inattendus.
- Utilisation dans les agrégats : Une fois converties en BINARY_DOUBLE, les données peuvent être utilisées efficacement avec des fonctions d'agrégation numériques comme AVG, STDDEV ou VARIANCE, offrant des performances améliorées par rapport aux formats décimaux.
- Interaction avec d'autres fonctions : La sortie de TO_BINARY_DOUBLE peut être directement exploitée par d'autres fonctions de conversion ou de formatage comme TO_CHAR pour l'affichage, permettant de combiner précision et présentation personnalisée.
- Précautions sur les arrondis : Lors de la conversion, certaines valeurs entières ou décimales peuvent être légèrement modifiées en raison des limites binaires de représentation. Ce comportement est normal pour les flottants et doit être anticipé dans les calculs critiques.
Dernière mise à jour : Dimanche, le 29 Juin 2025