SQL Oracle : Opérateurs

Les opérateurs arithmétiques

()

Permet d'évaluer en priorité les opérateurs entre parenthèses

-

Signe négativement une expression numérique

+-*/

Addition, soustraction, multiplication, division


Les opérateurs chaînes de caractères

||

concaténation de chaînes de caractères


Les opérateurs divers

(+)

Utilisé en jointure externe. La colonne suffixée de cet opérateur est une clé étrangère.

count(*)

Nombre d'enregistrements retournés par la sélection.

count(expr)

Nombre d'enregistrements retournés par la sélection, pour lesquels expr n'a pas une valeur NULL.

distinct

Elimine les doublons de l'expression suivant distinct.

prior

Définit la relation hiérarchique dans une interrogation arborescente. La partie droite de l'égalité indique l'enfant, la partie gauche le parent.

 


Les fonctions numériques

m et n représentent des données de type numérique ou des expressions ayant une donnée résultante de type numérique.

ABS(n)

Valeur absolue
ABS(-32.5)=32.5

CEIL(n)

Plus petit entier relatif égal ou supérieur
CEIL(31.5)=32 CEIL(-31.5)=-31

FLOOR(n)

Plus grand entier relatif inférieur ou égal
FLOOR(31.5)=31 FLOOR(-31.5)=-32

MOD(m,n)

Reste de la division de m par n
MOD(35,4)=3

POWER(m,n)

m puissance n
POWER(4,3)=84

SIGN(n)

Indique le signe de n
SIGN(0)=0 SIGN(-5)=-1 SIGN(5)=1

SQRT(n)

Racine carrée de n
SQRT(9)=3 SQRT(-9)=NULL

ROUND(n)

Arrondi de n à 100 (Partie entière)
ROUND(15.3)=15 ROUND(15.5)=16

ROUND(n,m)

Arrondi de n à 10-m
ROUND(1500,-3)=2000 ROUND(1499,-3)=1000
ROUND(1.55,1)=1.6 ROUND(1.551,2)=1.55

TRUNC(n)

n tronqué à 100 (Partie entière)
TRUNC(15.3)=15

TRUNC(n,m)

n tronqué à 10-m
TRUNC(1500,-3)=1000 TRUNC(1499,-3)=1000
TRUNC(1.55,1)=1.5 TRUNC(1.551,2)=1.5


Les fonctions de groupe

AVG(expr)

Moyenne de toutes les valeurs de expr

COUNT(*)

Nombre d'enregistrements retournés par la sélection.

COUNT(expr)

Nombre d'enregistrements retournés par la sélection, pour lesquels expr n'a pas une valeur NULL.

MAX(expr)

Valeur maximale de toutes les valeurs de expr

MIN(expr)

Valeur minimale de toutes les valeurs de expr

STDDEV(expr)

Ecart type de toutes les valeurs de expr

SUM(expr)

Somme de toutes les valeurs de expr

VARIANCE(expr)

Variance de toutes les valeurs de expr


Les fonctions chaîne de caractères

Les fonctions retournant une valeur numérique.

ASCII(char)

Donne la valeur ASCII ou EBCDIC du premier caractère de la chaîne de caractères char.
ASCII('(parenthèses)')=40 ASCII(' ')=32

INSTR(char, char1[,n[,m]])

Recherche dans la chaîne de caractères char la position de la chaîne de caractères char1. Si n est précisé, la recherche se fait à partir du rang n. Si m est précisé, la recherche donne la position de la m-ième occurence de char2 dans char1. Si m est précisé, il est obligatoire de préciser n. INSTR('Contentement','t',1,5)=0
INSTR('Détermination','i',8)=11

LENGTH(char)

Donne la longueur de la chaîne de caractères char.
LENGTH('Intégrité')=9


Les fonctions retournant une valeur alphanumérique.

CHR(n)

Caractère ayant la valeur ASCII ou EBCDIC de n
CHR(65) = 'A' CHR(97)='a' CHR(40)='(

INITCAP(char)

La première lettre de chaque mot de la chaîne de caractères est mise en majuscule, toutes les autres lettre sont mises en minuscules. INITCAP('mAdamE de sTaEl')='Madame De Stael'

LOWER(char)

Toutes les lettres sont mises en minuscules LOWER('ConFiAnce')='confiance'

UPPER(char)

Toutes les lettres sont mises en majuscules UPPER('ConFiAnce')='CONFIANCE'

LPAD(char1,n,[char2])

Fait précéder la chaîne de caractères char1 de la chaîne de caractères char2 (espace si char2 non spécifié) jusqu'à la longueur n. Si n est inférieur à la longueur de char1, tronque char1 à la longueur n.
LPAD('Juin', 9,'=')= '=====Juin' LPAD('Juin',2,'=')='Ju'

RPAD(char1,n,[char2])

Fait suivre la chaîne de caractères char1 du caractère char2 (espace si char2 non spécifié) jusqu'à la longueur n. Si n est inférieur à la longueur de char1, tronque char à la longueur n.
RPAD('Juin', 9,'=')= 'Juin=====' RPAD('Juin',2,'=')='Ju'

LTRIM(char1[,char2])

Supprime du début de la chaîne de caractères char1 les caractères présents dans la chaîne de caractère char2 jusqu'à ce que plus aucun caractère de char2 ne débute char1.
LTRIM('=======Juin','=')= 'Juin' TRIM('Juin','Ju')='in'
LTRIM('JJuuJuJin','Ju')='ain'

RTRIM(char1[,char2])

Supprime de la fin de la chaîne de caractères char1 les caractères présents dans la chaîne de caractère char2 jusqu'à ce que plus aucun caractère de char2 ne termine char1.
RTRIM('Juin=======','=')= 'Juin' TRIM('Juin','in')='Ju' RTRIM('Juiniinnnii','in')='Ju'

REPLACE(char, char1, char2)

Remplace dans la chaîne de caractères char la chaîne de caractères char1 par la chaîne de caractères char2.
REPLACE('1.235.256,45','.',' ')='1 235 256,45' REPLACE('ABBABAAAB','AB','C')=''CBCAAC'

SUBSTR(char1,n[,m])

Extrait de la chaîne de caractères char1, les caractères situés à partir du rang n jusqu'à la longueur m, ou jusqu'à la fin si m non spécifié. SUBSTR('Respect',4)='pect' SUBSTR('Respect',4,2)='pe'

TRANSLATE(char, char1 , char2)

Remplace dans la chaîne de caractères char les caractères présents dans la chaîne de caractère char1 par les caractères de même rang présents dans la chaîne de caractères char2.
REPLACE('1.235.256,45','.,',' ,')='1 235 256.45' REPLACE('Satisfaction','sa','*')='Sti*fction'


Les fonctions date

Fonctions

ADD_MONTHS(date, n)

Ajout de n mois à la date.
ADD_MONTHS('01-DEC-93')='01-JAN-94'

LAST_DAY(date)

Indique le dernier jour du mois de date
LAST_DAY('15-FEV-93')='28-FEV-93'

MONTHS_BETWEEN
(date1, date2)

Nombre de mois entre date1 et date2. La partie décimale est obtenue en divisant le nombre de jours par 31.
MONTHS_BETWEEN('26-JUN-90','25-DEC-93')=40,967742 MONTHS_BETWEEN('26-JUN-90','26-DEC-89')=-6

NEXT_DAY(d,j)

Date postérieure à la date d du jour j.
NEXT_DAY('12-DEC-93', 'MERCREDI')='15-DEC-93'

ROUND(date[,format])

Arrondi de la date au format spécifié. Si format non spécifié, arrondi au jour le plus proche.
ROUND(TO_DATE('30-JUN-93'),'Y')='01-JAN-93
ROUND(TO_DATE('01-JUL-93'),'Y')='01-JAN-94'
ROUND( TO_DATE('15-12-93 12:00:00','DD-MM-YY HH:MI:SS')) = '16-DEC-93'
ROUND(TO_DATE('15-12-93 11:59:59','DD-MM-YY HH:MI:SS')) ='15-DEC-93'

TRUNC(date[,format])

Date tronquée au format spécifié. Si format non spécifié, arrondi au jour.
TRUNC(TO_DATE('01-JUL-93'),'Y')='01-JAN-93'
TRUNC( TO_DATE('15-12-93 12:00:00','DD-MM-YY HH:MI:SS')) ='15-DEC-93'
TRUNC(TO_DATE('15-12-93'),'MM')='01-DEC-93'


Formats des fonctions TRUNC et ROUND

CC, SCC

Arrondi ou tronqué au siècle.

YYYY, SYYYY, YEAR, SYEAR, YYY, YY, Y

Arrondi ou tronqué à l'année. Changement d'arrondi à partir du 1er juillet.

Q

Arrondi ou tronqué au trimestre. Changement d'arrondi à partir du 16 du 2ème mois.

MONTH, MON, MM

Arrondi ou tronqué au mois. Changement d'arrondi à partir du 16ème jour.

WW

Arrondi ou tronqué à la semaine dans l'année.

W

Arrondi ou tronqué à la semaine dans le mois.

DDD, DD, J

Arrondi ou tronqué au jour (Valeur par défaut).

DAY, DY, D

Arrondi ou tronqué au dimanche le plus proche.

HH, HH12, HH24

Arrondi ou tronqué à l'heure.

MI

Arrondi ou tronqué à la minute.


Fonctions de conversion

Fonctions

TO_NUMBER(chaîne)

Conversion d'une chaîne en nombre.TO_NUMBER('025')=25

TO_CHAR(expr[,format])

Conversion d'une expression de type date ou numérique en chaînes de caractères.TO_CHAR(SYSDATE,'DD-MM-YY')= '01-01-94'

TO_DATE(chaîne[, format])

Conversion d'une chaîne de caractères en date.TO_DATE('01-01-94', 'WW')=1

CHARTOROWID(chaîne)

Convertit une chaîne de caractères en rowid.CHARTOROWID('0000000E.0002.0001')=0000000E.0002.0001

ROWIDTOCHAR(rowid)

Convertit une valeur de type rowid en chaîne de caractères.

CONVERT(chaîne,
[, dest_jeu] [, srce_jeu])

Convertit une chaîne de caractères, du jeu de caractères srce_jeu dans lequel elle est stockée dans la base vers le jeu de caractères dest_jeu.Par défaut le jeu de caractères dest_jeu est 'US7ASCII'. Par défaut le jeu de caractères srce_jeu est celui de l'argument <char_set> du paramètre LANGAGE du INIT.ORA courant.

HEXTORAW(chaîne)

Convertit une chaîne de caractères contenant une valeur hexadécimale en valeur binaire.

RAWTOHEX(raw)

Convertit une valeur binaire en nombre hexadécimal.


Résumé des conversions classiques par type :

Type en entrée
Type en sortie

CHAR

DATE

NUMBER

CHAR

 

TO_DATE

TO_NUMBER

DATE

TO_CHAR

 

Invalide

NUMBER

TO_CHAR

TO_DATE

 

Formats numériques

9

Le nombre de 9 détermine la longueur d'affichage.
9999 123

0

Placé devant des 9, indique que les zéros sont affichés.
09999 0123

B

Placé devant des 9, indique que les zéros sont affichés par des espaces.
B9999 123

$

Placé devant des 9, indique que le signe $ sera affiché devant le nombre.
$9999 $123

MI

Placé après les 9, affiche un - après une valeur négative.
9999MI 123-

PR

Placé après les 9, affiche une valeur négative entre <>.
9999PR <123>

,

Affiche une virgule à la position où elle se trouve dans la série de 9.
999,99 1,234

.

Affiche un point à la position où il se trouve dans la série de 9.999.99 123.00

V

Multiplie la valeur par 10n où n est le nombre de 9 suivant V.
999V99 12300

E

Affiche le nombre en notation scientifique.
9.999EEEE 1.23E2

 

Formats date

CC ou SCC

Indique le siècle. S fait précéder les dates situées Avant JC de -.

YYYY ou SYYYY

Année sur 4 chiffres. S fait précéder les dates situées Avant JC de -.

YYY ou YY ou Y

Les trois, deux ou dernier chiffres de l'année.

Y,YYY

Millénaire suivi d'une virgule.

YEAR ou SYEAR

Année en toutes lettres. S fait précéder les dates situées Avant JC de -.

BC ou AD

Affiche la mention BC ou AD après la date.

B.C. ou A.D.

Affiche la mention B.C. ou A.D. après la date.

Q

Affiche le trimestre (1 pour Janvier-Mars, ...).

MM

Affiche le mois sous forme de deux chiffres (01 à 12).

MONTH

Nom du mois en toutes lettres sur 9 caractères (donc complété éventuellement par des blancs) en majuscules, capitales ou minuscules.

MON

Nom du mois en toutes lettres abrégé en trois lettres.

WW

Numéro de la semaine dans l'année (la semaine 1 commence le 1er jour de l'année et dure 7 jours).

W

Numéro de la semaine dans le mois (la semaine 1 commence le 1er jour du mois et dure 7 jours).

DDD

Rang du jour dans l'année (1 à 365 ou 366).

DD

Rang du jour dans le mois (1 à 28, 29, 30 ou 31).

D

Rang du jour dans la semaine (1 à 7).

DAY, Day, day

Nom du jour en toutes lettres sur 9 caractères (donc complété éventuellement par des blancs) en majuscules, capitales ou minuscules.

DY

Nom du jour en toutes lettres abrégé en trois lettres.

J

Jour julien. Nombre de jours écoulés depuis le 1er janvier 4712 BC.

AM ou PM

Suffixe la date de la mention AM (matin) ou PM (après-midi).

A.M. ou P.M.

Suffixe la date de la mention A.M. (matin) ou P.M. (après-midi).

HH ou HH12

Heure de 01 à 12.

HH24

Heure de 01 à 24.

MI

Minutes (01 à 60)

SS

Secondes (01 à 60)

SSSSS

Secondes écoulées depuis Minuit.

/ . , -

Ponctuations autorisées dans le résultat.

"chaîne"

Chaîne de caractères chaîne reproduite dans le résultat.

fm

Préfixe permettant de supprimer les blancs suffixants et les zéros préfixants. Fonctionne comme un switch : si présent un nombre pair de fois dans le format, active les suppressions à partir du rang impair et les désactive à partir du rang pair.

TH

Suffixe suffixant de TH (DDTH:04TH).

SP

Suffixe demandant l'affichage en toutes lettres(DDSP:FOUR).

SPTH ou THSP

Suffixe demandant l'affichage en toutes lettres suffixé de TH.

 


Fonctions diverses

BFILENAME  

DECODE
( expr, val1, rés1 [, val2, rés2] [...,...] [, défaut] )

Compare la valeur de l'expression expr à valeuri et retourne le résultat résultati en cas d'égalité. S'arrête dès l'égalité ou si toutes les valeurs ont été balayées. Si l'égalité ne s'est pas produite, retourne la valeur défaut si celle-ci est indiquée, sinon retourne la valeur NULL.

DUMP
( expr, [,format [n [,l]]] )

Affiche au format interne désigné une expression expr, à partir de la position n dans l'expression sur une longueur l. Affiche le résultat en entier si n et l non spécifiés. Les formats possibles sont :
8 (octal), 10 (décimal), 16 (hexadécimal) et 17 (caractères).

EMPTY_BLOB /
EMPTY_CLOB
initialise à vide, une variable pointeur de LOB

GREATEST(liste)

Plus grande valeur de la liste

LEAST(liste)

Plus petite valeur de la liste

NLS_CHARSET_DECL_LEN
(lg_colonne, id_char_set)
renvoie la longueur déclarée d'un NCHAR
NLS_CHARSET_ID (nom) renvoie le no du character set en parametre
NLS_CHARSET_NAME (n) renvoie le nom du character set de no n

NVL
( expr1, expr2 )

Retourne la valeur de expr2 si expr1 est de valeur NULL, retourne la valeur de expr1 sinon. expr2 et expr1 doivent être de même type

UID

Identificateur de l'utilisateur courant

USER

Utilisateur courant

USERENV












(  
'OSDBA' true si le user a OSDBA rôle , false sinon
'LANGAGE' renvoie le langage et le character set utilisé dans la session
'TERMINAL' renvoie l'identificateur de terminal (OS) de votre session
'SESSIONID' no de la session AUDIT (si AUDIT TRAIL est TRUE)
'ENTRYID' no d'entree dans la session d'Audit
'LANG' abréviation ISO du 'langage' utilisé
'INSTANCE' no d'identication de l'instance courante
)  
VSIZE (expr)
renvoie la taille physique (en bytes) de la donnée


(c) 2002- 2006 Didier Deléglise


modifié
le 20/11/2006

Ecrire a DD
ecris
moi


les forums techniques Oracle

mon BLOG Oracle,
en Francais
connaitre DD
l'autre vie
de DD

mon CV

trucs
et astuces

JOBs Oracle
du jour
Homepage "Tout sur Oracle"
Mon site :
Tout sur Oracle (et le web)
Copyright (C) 2002
Utilisation de ces documents