Cet article présente principalement un résumé de l'utilisation des instructions if et case dans MySQL. Cet article explique l'utilisation des instructions IF comme expressions et les amis dans le besoin peuvent s'y référer.
Le if de MySQL peut être utilisé comme expression ou comme instruction de contrôle de processus dans une procédure stockée. Ce qui suit est utilisé comme expression :
IF expression
IF(expr1,expr2,expr3)
Copier après la connexion
Si expr1 est VRAI (expr1 <> 0 et expr1 <> NULL), alors la valeur de retour de IF() est expr2 sinon la valeur de retour ; est expr3. La valeur de retour de IF() est soit une valeur numérique, soit une valeur de chaîne, selon le contexte.
select *,if(sva=1,"男","女") as ssva from taname where sva != ""
Copier après la connexion
if en tant qu'expression peut également être implémenté en utilisant CASE lorsque :
select CASE sva WHEN 1 THEN '男' ELSE '女' END as ssva from taname where sva != ''
Copier après la connexion
Dans le résultat de retour de la première solution, value=compare -value . Le résultat de retour du deuxième scénario est le vrai résultat du premier scénario. S'il n'y a pas de valeur de résultat correspondante, le résultat renvoyé est le résultat après ELSE. S'il n'y a pas de partie ELSE, la valeur de retour est NULL.
Par exemple :
SELECT CASE 1 WHEN 1 THEN 'one'
WHEN 2 THEN 'two'
ELSE 'more' END
as testCol
Copier après la connexion
en affichera un
IFNULL(expr1,expr2)
if expr1 n'est pas NULL, la valeur de retour de IFNULL() est expr1 ; sinon, la valeur de retour est expr2 ; La valeur de retour de IFNULL() est soit un nombre, soit une chaîne, selon le contexte dans lequel il est utilisé.
mysql> SELECT IFNULL(1,0); -> 1
mysql> SELECT IFNULL(NULL,10); -> 10
mysql> SELECT IFNULL(1/0,10); -> 10
mysql> SELECT IFNULL(1/0,'yes'); -> 'yes'
Copier après la connexion
La valeur de résultat par défaut de IFNULL(expr1,expr2) est la plus "générale" des deux expressions, dans l'ordre STRING, REAL ou INTEGER.
IF ELSE est utilisé comme instruction de contrôle de flux pour utiliser
if pour implémenter un jugement conditionnel et effectuer différentes opérations lorsque différentes conditions sont remplies. , nous connaissons tous le rôle de if. Bon, voyons comment l'utiliser dans la procédure stockée mysql.
IF search_condition THEN
statement_list
[ELSEIF search_condition THEN]
statement_list ...
[ELSE
statement_list]
END IF
Copier après la connexion
Semblable à l'instruction IF en PHP, lorsque la condition search_condition dans IF est établie, l'instruction Statement_list après THEN est exécutée, sinon la condition dans ELSEIF est jugée, et si elle est établie, la suivante L'instruction Statement_list est exécutée, sinon continuez à juger les autres branches. Lorsque les conditions de toutes les branches ne sont pas remplies, la branche ELSE est exécutée. search_condition est une expression conditionnelle, qui peut être composée d'opérateurs conditionnels tels que "=, <, <=, >, >=, !=", et plusieurs expressions peuvent être combinées à l'aide de AND, OR et NOT .
Par exemple, créez une procédure stockée qui interroge la note de l'étudiant (grade) via le numéro d'étudiant (student_no) et le numéro de cours (course_no), et renvoie la note et la note de ceux qui ont des notes supérieures à 90 points. Un grade B est un score inférieur à 90 points mais pas inférieur à 80 points, le grade C est un score inférieur à 80 points mais pas inférieur à 70 points, et ainsi de suite jusqu'au grade E. Ensuite, le code pour créer la procédure stockée est le suivant :
create procedure dbname.proc_getGrade
(stu_no varchar(20),cour_no varchar(10))
BEGIN
declare stu_grade float;
select grade into stu_grade from grade where student_no=stu_no and course_no=cour_no;
if stu_grade>=90 then
select stu_grade,'A';
elseif stu_grade<90 and stu_grade>=80 then
select stu_grade,'B';
elseif stu_grade<80 and stu_grade>=70 then
select stu_grade,'C';
elseif stu_grade70 and stu_grade>=60 then
select stu_grade,'D';
else
select stu_grade,'E';
end if;
END
Copier après la connexion
Remarque : IF est une instruction, et un point-virgule ";" doit être ajouté après END IF pour indiquer la fin de l'instruction, ainsi que d'autres instructions telles que CASE, LOOP, etc. Idem.
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
Une question sur la redirection de Laravel Route
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!