Transformer et formater les types de données
Les fonctions de conversion permettent de transformer des données d'un type à un autre (chaîne, nombre, date) et de formater les valeurs pour l'affichage.
SELECT salaire,
TO_CHAR(salaire, '999,999') AS salaire_formate,
TO_CHAR(salaire, '$999,999.00') AS salaire_dollars,
TO_CHAR(salaire, '0999999') AS avec_zeros
FROM EMPLOYES;
Formats numériques courants :
9 : chiffre (espace si absent)0 : chiffre (zéro si absent), : séparateur de milliers. : séparateur décimal$ : symbole dollarL : symbole monétaire localSELECT date_embauche,
TO_CHAR(date_embauche, 'DD/MM/YYYY') AS format_fr,
TO_CHAR(date_embauche, 'Month DD, YYYY') AS format_long,
TO_CHAR(date_embauche, 'DAY') AS jour_semaine,
TO_CHAR(date_embauche, 'HH24:MI:SS') AS heure
FROM EMPLOYES;
Formats de dates courants :
DD : jour (01-31)MM : mois numérique (01-12)YYYY : année sur 4 chiffresMonth : nom du moisDAY : nom du jourHH24 : heure (00-23)MI : minutesSS : secondesSELECT TO_NUMBER('1234.56') AS nombre,
TO_NUMBER('$1,234.56', '$9,999.99') AS avec_format
FROM DUAL;
SELECT TO_DATE('01/01/2024', 'DD/MM/YYYY') AS date1,
TO_DATE('2024-01-01', 'YYYY-MM-DD') AS date2,
TO_DATE('January 1, 2024', 'Month DD, YYYY') AS date3
FROM DUAL;
-- Conversion implicite (déconseillée)
SELECT * FROM EMPLOYES WHERE emp_id = '101';
-- Conversion explicite (recommandée)
SELECT * FROM EMPLOYES WHERE emp_id = TO_NUMBER('101');
-- Formater un rapport de salaires
SELECT nom,
TO_CHAR(date_embauche, 'DD/MM/YYYY') AS embauche,
TO_CHAR(salaire, 'L999G999D00', 'NLS_CURRENCY=€ NLS_NUMERIC_CHARACTERS=,') AS salaire_euros
FROM EMPLOYES;
-- Convertir une chaîne en date pour une comparaison
SELECT nom
FROM EMPLOYES
WHERE date_embauche > TO_DATE('01/01/2020', 'DD/MM/YYYY');
-- Extraire l''année d''une date comme chaîne
SELECT nom,
TO_CHAR(date_embauche, 'YYYY') AS annee_embauche
FROM EMPLOYES
WHERE TO_CHAR(date_embauche, 'YYYY') = '2021';
SELECT nom,
NVL(commission, 0) AS commission,
NVL(TO_CHAR(email), 'Pas d''email') AS email,
COALESCE(commission, salaire * 0.1, 0) AS commission_finale
FROM EMPLOYES;
NVL(valeur, remplacement) remplace NULL par une valeur par défaut.
COALESCE retourne la première valeur non-NULL de la liste.
Utilise TO_CHAR pour formater les dates (format court et long) et les nombres (avec symbole dollar et séparateurs). NVL remplace les commissions NULL par 'N/A'.
Extrait l'année avec TO_CHAR pour grouper, compte les embauches, calcule le salaire moyen formaté, et trouve la première embauche de chaque année. Démontre l'usage de TO_CHAR dans GROUP BY.