Opérateurs et fonctions par thème
Voici les principaux opérateurs et fonctions (que j'ai décidé de conserver ...).
Opérateurs de calcul numérique
nom | définition | usage |
---|---|---|
DIV | division entière | 7 DIV 3 (=2) |
MOD | Modulo : Retourne le reste de la division entière | 7 MOD 3 (=1) |
Principales fonctions mathématiques
nom | définition | usage |
---|---|---|
ABS() | retourne la valeur absolue d'un nombre | ABS(-5) (=5) |
FLOOR(), TOP() | Retourne l'arrondi inférieur et supérieur à une valeur | FLOOR(5.55), TOP(5.55) (=5, 6) |
POW() | calcule la puissance d'un nombre | POW(2,3) (=8) |
RAND() | retourne un nombre aléatoire |
Principales fonctions circulaires (géométrie) et logarithmiques
nom | définition | usage |
---|---|---|
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 [[https://docs.oracle.com/cd/B19306_01/server.102/b14200/operators.htm#i1039607 | Oracle]]{.ext} ou MySQL
Principales fonctions de dates
nom | définition | usage |
---|---|---|
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 date | DATE_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 dates | DATEDIFF(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
nom | définition | usage |
---|---|---|
CONCAT() | concatène, assemble des chaines de caractères | CONCAT('abc', 'def', 5) (='abcdef5') |
SUBSTR() | retourne la partie de la chaîne de la position de départ et pour la longueur indiquées | SUBSTR(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îne | LENGTH('abcdef') (=6) |
CHAR_LENGTH() | retourne le (vrai) nombre de caractères de la chaîne | CHAR_LENGTH('abcdef') (=6) Attention, selon le nombre d'octets utilisés pour le codage des caractères, LENGTH() peut être faux |
IS | test 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
nom | définition | usage |
---|---|---|
ASCII() | retourne le code ascii de la plus part des caractères | ASCII("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ée | similaire à substr, on indique juste la position à garder : LEFT('abcdefg', 3) (='abc') |
LOCATE() | donne la position d'une sous-chaîne | LOCATE(recherche, chaîne) LOCATE('na', 'ananas') (=2, la 1ère occurrence trouvée) |
REPLACE() | remplace une sous-chaine par un autre | REPLACE('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 160bits | Utile 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 [[http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#function_if | MySQL]]{.ext}