Fonctions SQL à connaître

Rappel

Par opposition aux fonctions de calcul SQL qui s'appliquent sur toute la table pour réaliser des agrégats (en ne renvoyant qu'une seule valeur par regroupement), les fonctions "mono-ligne" sont des fonctions au sens classique, qui s'appliquent à une ou plusieurs valeurs et renvoient une valeur en retour.

Les fonctions "mono-ligne" :

  • Manipulent des éléments de données

  • Acceptent des arguments en entrée et retournent des valeurs en sortie

  • Agissent sur chaque ligne

  • Retournent un seul résultat par ligne

  • Peuvent modifier les types de données

Exemple

  • Traitement de chaîne

    • Concat, substr, length, insrt, lpad, trim

    • Lower, upper, initcap

  • Traitement de date

    • months_between, add_months, next_day, last_day,

    • SELECT sysdate FROM dual

    • Opérations mathématiques sur les dates : SELECT sysdate + 10 FROM dual

  • Traitement numérique

    • Round, Trunc

    • Floor, Ceil

    • Mod

  • Conversion

    • Conversion implicite

    • Conversion explicite : TO_DATE, TO_NUMBER, TO_CHAR

  • Générales

    • NVL (par exemple NVL(X,0) renvoie 0 si X vaut Null)

    • CASE WHEN condition1 THEN valeur1 WHEN condition2 THEN valeur2 ELSE valeur3 END

    • Imbrication de fonctions : F3(F2(F1(col,arg1),arg2),arg3)

Méthode

Les fonctions mono-ligne sont utilisées pour :

  • Transformer les données

  • Formater des dates et des nombres pour l'affichage

  • Convertir des types de données de colonnes

  • ...

ExempleExtraction de chaîne

La fonction substr(X, A, B) renvoie les B caractères à partir du caractère A dans la chaîne X.

Complément

  • Fonctions SQL

  • Vous pouvez consulter Oracle : SQL[1], page 9 à 12, pour avoir une description plus détaillée des fonctions disponibles sous Oracle.

RappelBD "Gestion des intervenants" : Schéma relationnel

1
tIntervenant (#pknom, prenom, poste)
2
tCours (#pkannee, #pknum, titre, type, fkintervenant=>tIntervenant, debut, \fin)

ExempleBD "Gestion des intervenants" : Question avec CASE

1
SELECT pknum,
2
  CASE 
3
    WHEN type='C' THEN 'Cours' 
4
    WHEN type='TD' THEN 'Travaux dirigés'
5
  END AS type_label,
6
  debut
7
FROM tCours
1
PKNUM TYPE_LABEL      DEBUT   
2
----- --------------- ---------
3
    1 Cours           01-JAN-01 
4
    2 Travaux dirigés 02-JAN-01