Utiliser des fonctions monolignes pour personnaliser les résultats 3-1 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Objectifs A la fin de ce chapitre, vous pourrez : • décrire les différents types de fonction disponibles en langage SQL • utiliser des fonctions de type date, caractère ou numérique dans des instructions SELECT 3-2 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Contenu du chapitre • • • • • 3-3 Fonctions SQL monolignes Fonctions de type caractère Fonctions numériques Utilisation des dates Fonctions de type date Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Fonctions SQL Entrée Sortie Fonction La fonction effectue une action arg 1 arg 2 Valeur du résultat arg n 3-4 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Deux types de fonction SQL Fonctions 3-5 Fonctions monolignes Fonctions multilignes Renvoient un résultat par ligne Renvoient un résultat par ensemble de lignes Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Fonctions monolignes Les fonctions monolignes : • manipulent des données • acceptent des arguments et renvoient une valeur • agissent sur chaque ligne renvoyée • renvoient un résultat par ligne • peuvent modifier le type de données • peuvent être imbriquées • acceptent des arguments qui peuvent se présenter sous la forme d'une colonne ou d'une expression function_name [(arg1, arg2,...)] 3-6 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Fonctions monolignes Caractère Fonctions monolignes Général Conversion 3-7 Numérique Date Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Fonctions de type caractère Fonctions de type caractère 3-8 Fonctions de manipulation de caractères Fonctions de manipulation de caractères LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD | RPAD TRIM REPLACE Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Fonctions de conversion de casse Ces fonctions convertissent la casse de chaînes de caractères : 3 - 10 Fonction Résultat LOWER('SQL Course') sql course UPPER('SQL Course') SQL COURSE INITCAP('SQL Course') Sql Course Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Utiliser les fonctions de conversion de casse Affichez le numéro d'employé, le nom et le numéro de département de l'employé Higgins : SELECT employee_id, last_name, department_id FROM employees WHERE last_name = 'higgins'; SELECT employee_id, last_name, department_id FROM employees WHERE LOWER(last_name) = 'higgins'; 3 - 11 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Fonctions de manipulation des caractères Ces fonctions manipulent les chaînes de caractères : 3 - 12 Fonction Résultat CONCAT('Hello', 'World') HelloWorld SUBSTR('HelloWorld',1,5) Hello LENGTH('HelloWorld') 10 INSTR('HelloWorld', 'W') 6 LPAD(salary,10,'*') *****24000 RPAD(salary, 10, '*') 24000***** REPLACE ('JACK and JUE','J','BL') BLACK and BLUE TRIM('H' FROM 'HelloWorld') elloWorld Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Utiliser les fonctions de manipulation de caractères 1 SELECT employee_id, CONCAT(first_name, last_name) NAME, job_id, LENGTH (last_name), INSTR(last_name, 'a') "Contains 'a'?" FROM employees WHERE SUBSTR(job_id, 4) = 'REP'; 1 3 - 13 2 3 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. 2 3 Fonctions numériques • • • 3 - 14 ROUND : Arrondit une valeur à un nombre de décimales donné. TRUNC : Tronque une valeur à un nombre de décimales donné. MOD : Renvoie le reste de la division. Fonction Résultat ROUND(45.926, 2) 45.93 TRUNC(45.926, 2) 45.92 MOD(1600, 300) 100 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Utiliser la fonction ROUND 1 2 SELECT ROUND(45.923,2), ROUND(45.923,0), ROUND(45.923,-1) FROM DUAL; 1 2 3 3 DUAL est une table publique que vous pouvez utiliser pour visualiser les résultats de fonctions ou de calculs. 3 - 15 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Utiliser la fonction TRUNC 1 2 SELECT TRUNC(45.923,2), TRUNC(45.923), TRUNC(45.923,-1) FROM DUAL; 1 3 - 16 2 3 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. 3 Utiliser la fonction MOD Pour tous les employés occupant un poste de vendeur, calculez le reste du salaire après sa division par 5 000. SELECT last_name, salary, MOD(salary, 5000) FROM employees WHERE job_id = 'SA_REP'; 3 - 17 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Utiliser des dates • • La base de données Oracle stocke les dates selon un format numérique interne : siècle, année, mois, jour, heures, minutes et secondes. Le format par défaut d'affichage de la date est DD-MON-RR. – Vous pouvez stocker des dates du 21ème siècle au 20ème siècle en indiquant seulement les deux derniers chiffres de l'année. – Vous pouvez stocker des dates du 20ème siècle au 21ème siècle de la même manière. SELECT last_name, hire_date FROM employees WHERE hire_date < '01-FEB-88'; 3 - 18 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Format de date RR Année en en cours cours Année 1995 1995 2001 2001 Date indiquée 27-OCT-95 27-OCT-95 27-OCT-95 27-OCT-95 Format RR 1995 2017 2017 1995 Format YY 1995 1917 2017 2095 Si l'année à deux chiffres indiquée est : Si deux chiffres de l'année en cours sont : 3 - 19 0–49 50–99 0–49 La date renvoyée appartient au siècle en cours 50–99 La date renvoyée appartient au siècle suivant celui en cours La date renvoyée appartient au siècle précédant celui en cours La date renvoyée appartient au siècle en cours Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Utiliser la fonction SYSDATE SYSDATE est une fonction qui renvoie : • • la date l'heure SELECT sysdate FROM dual; 3 - 21 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Opérations arithmétiques avec des dates • • • 3 - 22 Vous pouvez ajouter un nombre à une date ou le soustraire pour obtenir une nouvelle date. Vous pouvez soustraire deux dates pour connaître le nombre de jours qui les sépare. Vous pouvez ajouter des heures à une date en divisant le nombre d'heures par 24. Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Utiliser des opérateurs arithmétiques avec des dates SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS FROM employees WHERE department_id = 90; 3 - 23 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Fonctions de manipulation de dates 3 - 24 Fonction Résultat MONTHS_BETWEEN Nombre de mois entre deux dates ADD_MONTHS Ajout de mois calendaires à la date NEXT_DAY Jour suivant la date indiquée LAST_DAY Dernier jour du mois ROUND Arrondi de la date TRUNC Troncature de la date Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Utiliser les fonctions de type date 3 - 25 Fonction Résultat MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') 19.6774194 ADD_MONTHS ('31-JAN-96',1) '29-FEB-96' NEXT_DAY ('01-SEP-95','FRIDAY') '08-SEP-95' LAST_DAY ('01-FEB-95') '28-FEB-95' Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Utiliser les fonctions ROUND et TRUNC avec des dates Hypothèse : SYSDATE = '25-JUL-03' : 3 - 26 Fonction Résultat ROUND(SYSDATE,'MONTH') 01-AUG-03 ROUND(SYSDATE ,'YEAR') 01-JAN-04 TRUNC(SYSDATE ,'MONTH') 01-JUL-03 TRUNC(SYSDATE ,'YEAR') 01-JAN-03 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés. Quiz Lesquelles des affirmations suivantes sont vraies pour les fonctions monolignes ? 1. Elles manipulent des données. 2. Elles acceptent des arguments et renvoient une valeur pour chacun. 3. Elles agissent sur chaque ligne renvoyée. 4. Elles renvoient un résultat par ensemble de lignes. 5. Elles ne peuvent pas modifier le type de données. 6. Elles peuvent être imbriquées. 7. Elles acceptent des arguments qui peuvent se présenter sous la forme d'une colonne ou d'une expression. 3 - 27 Copyright © 2015 Oracle et/ou ses filiales. Tous droits réservés.