coincoins

SQL.LID - Les opérateurs exotiques

Aller plus loin : opérateurs, fonctions, ...

Opérateurs et fonctions par thème
Effectuer des calculs dans SELECT, WHERE ou HAVING, c'est déjà connu, mais il existe des fonctions assez sympa pour encore faire plus de calculs et de manipulations de chaînes et dates ...

Principaux opérateurs et fonctions (que j'ai décidé de conserver ...).

Principaux opérateurs de calcul numérique.

Opérateurs
nomdéfinitionusage
DIVdivision entière7 DIV 3 (=2)
MODModulo : Retourne le reste de la division entière7 MOD 3 (=1)

Principales fonctions mathématiques.

fonctions
nomdéfinitionusage
ABS()retourne la valeur absolue d'un nombreABS(-5) (=5)
FLOOR(), TOP()Retourne l'arrondi inférieur et supérieur à une valeurFLOOR(5.55), TOP(5.55) (=5, 6)
POW()calcule la puissance d'un nombrePOW(2,3) (=8)
RAND()retourne un nombre aléatoire

Principales fonctions circulaires (géométrie) et logarithmiques.

nomdéfinitionusage
COS(), SIN(), TAN(), COT()cosinus, sinus, tangeante et cotangeante d'un angle
ACOS(), ASIN(), ATAN()Arc cosinus, arc sinus et arc tangeante d'une valeur, renvoie l'angle
EXP(), LOG() ou LN()Fonction logarithmes

voir les liens chez Oracle ou MySQL

Principales fonctions de dates.

nomdéfinitionusage
CURDATE(), CURTIME(), NOW()retourne la date, l'heure courante et la (date & heure) courante
DATE_ADD(), DATE_SUB()Ajoute, retranche un interval spécifié à une dateDATE_ADD(date,INTERVAL expr type)
avec expr un nombre et type le type de nombre (SECOND, DAY, YEAR, etc. ...). Idem pour date_sub()
DATEDIFF()Retourne la différence entre deux datesDATEDIFF(date1, date2) (=nbre de jours de différence, en plu ou en moins)
DAYOFWEEK(), DAYOFYEAR()retourne le n° du jour dans la semaine, dans l'année/!\ 1=dimanche aux US !
WEEK()retourne le n° de la semaine dans l'année

Principales fonctions de chaines et caractères.

nomdéfinitionusage
CONCAT()concatène, assemble des chaines de caractèresCONCAT('abc', 'def', 5) (='abcdef5')
SUBSTR()retourne la partie de la chaîne de la position de départ et pour la longueur indiquéesSUBSTR(chaine, depart, longueur)
SUBSTR('abcdef', 2, 3) (='bcd' ; on commence à 1)
TRIM()enlève les espaces inutiles' aaa ' => 'aaa'
LOWER(), UPPER()converti la chaine en minuscules, majuscules'AbCd' => respectivement : 'abcd' et 'ABCD'
LENGTH()retourne le nombre de caractères de la chaîneLENGTH('abcdef') (=6)
CHAR_LENGTH()retourne le (vrai) nombre de caractères de la chaîneCHAR_LENGTH('abcdef') (=6)
Attention, selon le nombre d'octets utilisés pour le codage des caractères, LENGTH() peut être faux
IStest booléen (champ IS NULL; champ IS NOT NULL)Voir aussi IS_IPV4, IS_IPV6, ... qui sont intéressantes

Autres fonctions de chaines, pour le fun.

ASCII()retourne le code ascii de la plus part des caractèresASCII("a") (=41)
CHAR()retourne le caracter du code ascii donnéchar(41) => 'a'
LEFT(), RIGHT()retourne la partie gauche et droite d'une chaîne jusqu'à la position indiquéesimilaire à substr, on indique juste la position à garder : LEFT('abcdefg', 3) (='abc')
LOCATE()donne la position d'une sous-chaîneLOCATE(recherche, chaîne)
LOCATE('na', 'ananas') (=2, la 1ère occurrence trouvée)
REPLACE()remplace une sous-chaine par un autreREPLACE('bibobu', 'b', 'B') (='BiBoBu')
REVERSE()inverse les caractères d'une chaîne... nuf el ruop tnemiarv
SHA(), SHA1()chiffre une chaine selon l'algoithme SHA 160bitsUtile pour les mots de passe si ce n'est pas fait dans le code du script.

Usage d'un IF dans SELECT, WHERE ou HAVING

Ce IF sert à faire des comparaison et produire un résultat qui ira, par exemple, dans une colonne.

Ca peut être sympa de faire des tests et de fournir une valeur conditionnée.

Il s'utilise comme si on était dans un tableur.

IF(expr1, expr2, expr3) : Si expr1 est vraie (TRUE) c'est à dire expr1 <> 0 et expr1 <> NULL, alors IF() retourne expr2. Sinon, elle retourne expr3.

IF() retourne une valeur numérique ou chaîne, selon le type de résultat de l'expression validée.

Voir aussi ce lien vers MySQL

Top of page