Vous êtes sur la page 1sur 42

3

Fonctions Mono-Ligne

Copyright Oracle Corporation

Objectifs
A la fin de ce chapitre, vous saurez :
Dcrire diffrents types de fonctions SQL

Utiliser les fonctions caractre, numriques et date dans les ordres SELECT Expliquer les fonctions de conversion

3-2

Copyright Oracle Corporation

Fonctions SQL
Entre arg 1 Sortie

Fonction La fonction excute une action

arg 2

Valeur rsultante

arg n

3-3

Copyright Oracle Corporation

Deux Types de Fonctions SQL

Fonctions

Fonctions mono-ligne

Fonctions multi-ligne

3-4

Copyright Oracle Corporation

Fonctions Mono-Ligne
Manipulent des lments de donnes

Acceptent des arguments et ramnent une valeur


Agissent sur chacune des lignes rapportes Ramnent un seul rsultat par ligne Peuvent modifier les types de donnes Peuvent tre imbriques
function_name (column|expression, [arg1, arg2,...])

3-5

Copyright Oracle Corporation

Fonctions Mono-Ligne
Caractre

Gnrale

Fonctions mono-ligne

Numrique

Conversion

Date

3-6

Copyright Oracle Corporation

Fonctions Caractre
Fonction caractre

Fonctions de conversion majuscules/minuscules LOWER

Fonctions de manipulation des caractres CONCAT

UPPER INITCAP

SUBSTR LENGTH INSTR LPAD ...


Copyright Oracle Corporation

3-7

Fonctions de Conversion Majuscules/Minuscules

Fonction

Rsultat cours sql COURS SQL Cours Sql

LOWER('Cours SQL')
UPPER('Cours SQL') INITCAP('Cours SQL')

3-8

Copyright Oracle Corporation

Utilisation des Fonctions de Conversion Majuscules/Minuscules


Afficher le matricule, le nom et le numro de dpartement de lemploy Blake.
SQL> SELECT empno, ename, deptno 2 FROM emp 3 WHERE ename = 'blake'; no rows selected SQL> SELECT 2 FROM 3 WHERE empno, ename, deptno emp LOWER(ename) = 'blake';

EMPNO ENAME DEPTNO --------- ---------- --------7698 BLAKE 30


3-9
Copyright Oracle Corporation

Fonctions de Manipulation des Caractres


Manipulation de chanes de caractres
Fonction CONCAT('Une', 'Chane') SUBSTR('Chane',1,3) Cha 6 3 ******5000 Rsultat UneChane

LENGTH('Chane')
INSTR('Chane', 'a') LPAD(sal,10,'*')

3-10

Copyright Oracle Corporation

Utilisation des Fonctions de Manipulation des Caractres


SQL> SELECT ename, CONCAT (ename, job), LENGTH(ename), 2 INSTR(ename, 'A') 3 FROM emp 4 WHERE SUBSTR(job,1,5) = 'SALES';
ENAME ---------MARTIN ALLEN TURNER WARD CONCAT(ENAME,JOB) LENGTH(ENAME) INSTR(ENAME,'A') ------------------- ------------- ---------------MARTINSALESMAN 6 2 ALLENSALESMAN 5 1 TURNERSALESMAN 6 0 WARDSALESMAN 4 2

3-11

Copyright Oracle Corporation

Fonctions Numriques
ROUND : Arrondit la valeur la prcision spcifie

ROUND(45.926, 2) 45.93 TRUNC : Tronque la valeur la prcision spcifie 45.92

TRUNC(45.926, 2)

MOD :

Ramne le reste dune division

MOD(1600, 300)

100
3-12

Copyright Oracle Corporation

Utilisation de la Fonction ROUND


Affichage de la valeur 45.923 arrondie au centime, 0 dcimale et la dizaine suprieure.
SQL> SELECT ROUND(45.923,2), ROUND(45.923,0), 2 ROUND(45.923,-1) 3 FROM DUAL;

ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1) --------------- -------------- ----------------45.92 46 50

3-13

Copyright Oracle Corporation

Utilisation de la Fonction TRUNC


Affichage de la valeur 45.923 tronque au centime, 0 dcimale et la dizaine.
SQL> SELECT TRUNC(45.923,2), TRUNC(45.923), 2 TRUNC(45.923,-1) 3 FROM DUAL;

TRUNC(45.923,2) TRUNC(45.923) TRUNC(45.923,-1) --------------- ------------- --------------45.92 45 40

3-14

Copyright Oracle Corporation

Utilisation de la Fonction MOD


Calculer le reste de la division salaire par commission pour lensemble des employs ayant un poste de vendeur.
SQL> SELECT 2 FROM 3 WHERE ename, sal, comm, MOD(sal, comm) emp job = 'SALESMAN';

ENAME SAL COMM MOD(SAL,COMM) ---------- --------- --------- ------------MARTIN 1250 1400 1250 ALLEN 1600 300 100 TURNER 1500 0 1500 WARD 1250 500 250
Copyright Oracle Corporation

3-15

Utilisation des Dates


Oracle stocke les dates dans un format numrique interne : sicle, anne, mois, jour, heures, minutes, secondes. Le format de date par dfaut est DDMON-YY. La fonction SYSDATE ramne la date et lheure courante. DUAL est une table factice qu'on peut utiliser pour visualiser SYSDATE.
3-16
Copyright Oracle Corporation

Oprations Arithmtiques sur les Dates


Ajout ou soustraction dun nombre une date pour obtenir un rsultat de type date. Soustraction de deux dates afin de dterminer le nombre de jours entre ces deux dates. Ajout dun nombre dheures une date en divisant le nombre dheures par 24.

3-17

Copyright Oracle Corporation

Utilisation dOprateurs Arithmtiques avec les Dates


SQL> SELECT ename, (SYSDATE-hiredate)/7 WEEKS 2 FROM emp 3 WHERE deptno = 10;

ENAME ---------KING CLARK MILLER

WEEKS --------830.93709 853.93709 821.36566

3-18

Copyright Oracle Corporation

Fonctions Date
FONCTION MONTHS_BETWEEN ADD_MONTHS NEXT_DAY LAST_DAY ROUND TRUNC DESCRIPTION Nombre de mois situs entre deux dates Ajoute des mois calendaires une date Jour qui suit la date spcifie Dernier jour du mois Arrondit une date Tronque une date

3-19

Copyright Oracle Corporation

Utilisation des Fonctions Date


MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')
19.6774194

ADD_MONTHS ('11-JAN-94',6)

'11-JUL-94'

NEXT_DAY ('01-SEP-95','FRIDAY')

'08-SEP-95'

LAST_DAY('01-SEP-95')
3-20
Copyright Oracle Corporation

'30-SEP-95'

Utilisation des Fonctions Date

ROUND('25-JUL-95','MONTH')

01-AUG-95

ROUND('25-JUL-95','YEAR') TRUNC('25-JUL-95','MONTH') TRUNC('25-JUL-95','YEAR')

01-JAN-96 01-JUL-95 01-JAN-95

3-21

Copyright Oracle Corporation

Fonctions de Conversion
Conversion de types de donnes

Conversion de types de donnes implicite

Conversion de types de donnes explicite

3-22

Copyright Oracle Corporation

Conversion de Types de Donnes Implicite


Pour les affectations, Oracle effectue automatiquement les conversions suivantes
De Vers

VARCHAR2 ou CHAR
VARCHAR2 ou CHAR

NUMBER
DATE

NUMBER
DATE
3-23

VARCHAR2
VARCHAR2
Copyright Oracle Corporation

Conversion de Types de Donnes Implicite


Pour lvaluation dexpressions, Oracle effectue automatiquement les conversions suivantes
De Vers

VARCHAR2 ou CHAR
VARCHAR2 ou CHAR

NUMBER
DATE

3-24

Copyright Oracle Corporation

Conversion de Types de Donnes Explicite


TO_NUMBER TO_DATE

NUMBER

CHARACTER

DATE

TO_CHAR

TO_CHAR

3-25

Copyright Oracle Corporation

Utilisation de la Fonction TO_CHAR avec les Dates


TO_CHAR(date, 'fmt')

Le modle de format : Doit tre plac entre simples quotes et diffrencie les majuscules et minuscules. Peut inclure tout lment valide de format date Comporte un lment fm qui supprime les espaces de remplissage ou les zros de tte Est spar de la valeur date par une virgule
3-26
Copyright Oracle Corporation

Modles de Format Date


YYYY YEAR MM MONTH DY DAY
3-27

Anne exprime avec 4 chiffres Anne exprime en toutes lettres Mois exprim avec 2 chiffres Mois exprim en toutes lettres 3 premires lettres du nom du jour

Jour exprim en toutes lettres


Copyright Oracle Corporation

Modles de Format pour les Dates


Les lments horaires formatent la
partie horaire de la date.
HH24:MI:SS AM 15:45:32 PM

Pour ajouter des chanes de caractres,


les placer entre guillemets.
DD "of" MONTH 12 of OCTOBER

Diffrents suffixes existent pour les


nombres.
ddspth
3-28

fourteenth
Copyright Oracle Corporation

Format de Date RR
Anne en Cours 1995 1995 2001 2001 Date Spcifie 27-OCT-95 27-OCT-17 27-OCT-17 27-OCT-95 Format RR 1995 2017 2017 1995 Format YY 1995 1917 2017 2095

Si lanne spcifie est situe entre


0-49 Si les 2 chiffres de lanne en cours sont 0-49 La nouvelle date appartient au sicle courant. La nouvelle date appartient au sicle suivant. 50-99 La nouvelle date appartient au sicle prcdent. La nouvelle date appartient au sicle courant.

50-99

3-29

Copyright Oracle Corporation

Utilisation de la Fonction TO_CHAR avec les Dates


SQL> SELECT ename, 2 TO CHAR(hiredate, 'fmDD Month YYYY') HIREDATE 3 FROM emp; ENAME HIREDATE ---------- ----------------KING 17 November 1981 BLAKE 1 May 1981 CLARK 9 June 1981 JONES 2 April 1981 MARTIN 28 September 1981 ALLEN 20 February 1981 ... 14 rows selected.

3-30

Copyright Oracle Corporation

Utilisation de la Fonction TO_CHAR avec les Nombres


TO_CHAR(number, 'fmt')

Utilisez les formats suivants avec TO_CHAR pour afficher un nombre sous la forme d'une chane de caractre.
9 0 Reprsente un chiffre Force laffichage du zro

$
L . ,
3-31

Place un signe dollar flottant


Utilise le symbole montaire local flottant Imprime un point dcimal Imprime un sparateur de milliers
Copyright Oracle Corporation

Utilisation de la Fonction TO_CHAR avec les Nombres


SQL> SELECT 2 FROM 3 WHERE TO_CHAR(sal,'$99,999') SALARY emp ename = 'SCOTT';

SALARY -------$3,000

3-32

Copyright Oracle Corporation

Fonctions TO_NUMBER et TO_DATE


Conversion dune chane de caractres en format numrique avec la fonction TO_NUMBER
TO_NUMBER(char)

Conversion dune chane de caractres en format date avec la fonction TO_DATE


TO_DATE(char[, 'fmt'])

3-33

Copyright Oracle Corporation

Fonction NVL
Convertit une valeur NULL en une valeur relle Fonctionne avec les donnes de type date, caractre et numrique. Les types de donnes doivent correspondre
NVL(comm,0) NVL(hiredate,'01-JAN-97') NVL(job,'No Job Yet')
3-34
Copyright Oracle Corporation

Utilisation de la Fonction NVL


SQL> SELECT ename, sal, comm, (sal*12)+NVL(comm,0) 2 FROM emp; ENAME SAL COMM (SAL*12)+NVL(COMM,0) ---------- --------- --------- -------------------KING 5000 60000 BLAKE 2850 34200 CLARK 2450 29400 JONES 2975 35700 MARTIN 1250 1400 16400 ALLEN 1600 300 19500 ... 14 rows selected.

3-35

Copyright Oracle Corporation

Fonction DECODE
Facilite les recherches conditionnelles en jouant le rle de CASE ou IF-THEN-ELSE
DECODE(col/expression, search1, result1 [, search2, result2,...,] [, default])

3-36

Copyright Oracle Corporation

Utilisation de la Fonction DECODE


SQL> SELECT job, sal, 2 DECODE(job, 'ANALYST' 3 'CLERK', 4 'MANAGER', 5 6 REVISED_SALARY 7 FROM emp;
JOB SAL REVISED_SALARY --------- --------- -------------PRESIDENT 5000 5000 MANAGER 2850 3420 MANAGER 2450 2940 ... 14 rows selected.
3-37
Copyright Oracle Corporation

SAL*1.1, SAL*1.15, SAL*1.20, SAL)

Imbrication des Fonctions


Le niveau dimbrication des fonctions mono-ligne est illimit Les fonctions imbriques sont values de l'intrieur vers l'extrieur F3(F2(F1(col,arg1),arg2),arg3)
Etape 1 = Rsultat 1 Etape 2 = Rsultat 2 Etape 3 = Rsultat 3
3-38
Copyright Oracle Corporation

Imbrication des Fonctions


SQL> SELECT 2 3 FROM 4 WHERE ename, NVL(TO_CHAR(mgr),'No Manager') emp mgr IS NULL;

ENAME NVL(TO_CHAR(MGR),'NOMANAGER') ---------- ----------------------------KING No Manager

3-39

Copyright Oracle Corporation

Rsum
Utilisez des fonctions mono-ligne pour :
Transformer des donnes
Formater des dates et des nombres pour

l'affichage
Convertir des types de donnes de

colonnes

3-40

Copyright Oracle Corporation

Prsentation des Exercices


Cration de requtes utilisant les fonctions numriques, caractre et date Utilisation de la concatnation avec les fonctions Ecriture de requtes insensibles la casse pour illustrer l'utilit des fonctions de type caractre Calcul des annes et mois d'anciennet d'un employ Dtermination de la date de rvision de salaire d'un employ
3-41
Copyright Oracle Corporation

Prsentation du Cours
<Saisissez ici des informations sur la prsentation du cours>

3-42

Copyright Oracle Corporation