TO_CHAR |
A caractère |
|---|---|
| Oracle Database SQL | Oracle Version 2 ou supérieure |
Syntaxe
| to_char(Nombre[,format_mask[,nls_language]]) |
Paramètres
| Nom | Description | |
|---|---|---|
| Nombre | Ce paramètre permet d'indiquer l'expression contenant le nombre à traiter | |
| format_mask | Ce paramètre permet d'indiquer le masque de format a utilisé. Voici les formats les plus communs : | |
| Valeur | Description | |
| DATE | Ce format permet d'indiquer que le format sera une date. | |
| TIMESTAMP | Ce format permet d'indiquer que le format sera un TIMESTAMP. | |
| TIMESTAMP WITH TIME ZONE | Ce format permet d'indiquer que le format sera un TIMESTAMP dans le fuseau horaire. | |
| TIMESTAMP WITH LOCAL TIME ZONE | Ce format permet d'indiquer que le format sera un TIMESTAMP dans le fuseau horaire local. | |
| "dd" | Ce format permet d'indiquer que le format sera le jour du mois. | |
| "hh" | Ce format permet d'indiquer que le format sera l'heure. | |
| "mm" | Ce format permet d'indiquer que le format sera le numéro du mois de l'année. | |
| "nn" | Ce format permet d'indiquer que le format sera les minutes. | |
| "ss" | Ce format permet d'indiquer que le format sera les secondes. | |
| "ww" | Ce format permet d'indiquer que le format sera le jour de la semaine. | |
| "yyyy" | Ce format permet d'indiquer que le format sera l'année. | |
| ... | ... | |
| nls_language | Ce paramètre permet d'indiquer le langage à utilisé | |
Description
Cette fonction permet de convertir une expression quelconque en une chaîne de caractères.
Remarques
- Polyvalence de conversion : La fonction TO_CHAR est extrêmement polyvalente puisqu'elle permet de convertir aussi bien des nombres que des dates ou des horodatages en texte. Cela facilite l'affichage et la manipulation de données dans des formats lisibles par l'utilisateur, sans altérer la valeur originale dans la base. Cette souplesse est essentielle dans les rapports, les exports et l'affichage d'interfaces.
- Formats personnalisés via format_mask : Le paramètre format_mask offre une grande liberté pour adapter la sortie au besoin exact, comme afficher une date en "YYYY-MM-DD" ou un nombre avec des séparateurs spécifiques. En utilisant ces masques, on peut obtenir une présentation cohérente des données dans toutes les requêtes. Cela réduit aussi la nécessité de post-traitement côté application.
- Compatibilité avec les données temporelles : TO_CHAR peut formater des champs DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE ou TIMESTAMP WITH LOCAL TIME ZONE avec précision. On peut ainsi extraire des parties spécifiques comme l'heure, les minutes ou l'année, tout en tenant compte des décalages horaires. Cette capacité est très utile pour les applications internationales.
- Support des paramètres linguistiques : Avec le paramètre nls_language, TO_CHAR peut produire une sortie dans une langue donnée, influençant les noms de mois, de jours ou même la représentation des nombres. Cela permet de créer des rapports multilingues sans réécrire les requêtes SQL. C'est un atout dans les environnements globaux où la localisation est cruciale.
- Utilisation avec les nombres : TO_CHAR ne se limite pas aux dates : il permet aussi de convertir des nombres avec des masques comme '999,999.00' pour inclure séparateurs et décimales. Cela facilite la génération d'états financiers ou de documents comptables directement depuis SQL. On évite ainsi des conversions additionnelles côté code applicatif.
- Précision dans le contrôle du format de sortie : Le contrôle du format via TO_CHAR est plus précis que les fonctions de formatage génériques des langages applicatifs. Oracle interprète directement les masques selon ses propres règles internes, ce qui garantit une uniformité d'affichage quel que soit le client exécutant la requête. Cela permet d'éviter des divergences entre environnements.
- Impact sur les performances : Bien que TO_CHAR soit pratique, son utilisation sur de grandes volumétries peut avoir un impact sur les performances, notamment s'il est appliqué dans une clause WHERE. Cela empêche l'utilisation d'index sur les colonnes concernées, ce qui peut ralentir fortement les requêtes. Il est donc recommandé de l'utiliser principalement pour l'affichage.
- Utilisation dans les tris et regroupements : On peut utiliser TO_CHAR dans une clause ORDER BY ou GROUP BY pour trier ou regrouper des données selon un format spécifique. Par exemple, grouper par "YYYY-MM" permet d'agréger des données par mois et année. C'est un outil puissant pour l'analyse statistique.
- Compatibilité ascendante : TO_CHAR est présent depuis les toutes premières versions d'Oracle, garantissant une compatibilité totale avec presque toutes les applications héritées. Cela signifie qu'un code SQL utilisant TO_CHAR depuis Oracle 7 fonctionnera toujours sous Oracle 19c. Sa stabilité en fait un choix sûr pour les projets long terme.
- Interaction avec d'autres fonctions Oracle : TO_CHAR est souvent combiné avec des fonctions comme TO_DATE, ROUND, TRUNC ou ADD_MONTHS pour effectuer des conversions complexes. Par exemple, on peut convertir un texte en date, le tronquer au mois, puis le reformater en texte. Cette combinaison accroît considérablement la puissance des traitements SQL.
- Gestion des formats complexes : Oracle permet d'utiliser des masques très avancés, incluant des textes littéraux, des indicateurs conditionnels ou des formats monétaires. Cela rend TO_CHAR particulièrement utile pour les documents formels comme des factures, où la présentation doit être soignée et constante. On peut même intégrer des espaces et ponctuations fixes dans le format.
- Précautions avec les conversions implicites : Si on ne spécifie pas de format_mask lors de la conversion d'une date, Oracle utilisera le format par défaut défini par NLS_DATE_FORMAT. Cela peut entraîner des incohérences si le paramètre système change entre deux environnements. Il est donc recommandé de toujours spécifier explicitement le format souhaité.
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015