MySQL での if ステートメントと case ステートメントの使用

不言
リリース: 2019-05-13 13:20:08
オリジナル
2321 人が閲覧しました

この記事では、MySQL における if ステートメントと case ステートメントの使用方法について概要を紹介します。この記事では、式やフロー制御ステートメントとしての IF ステートメントの使用方法について説明します。必要な方は参考にしてください。

MySQL での if ステートメントと case ステートメントの使用

Mysql の if は、式またはストアド プロシージャ内のプロセス制御ステートメントとして使用できます。次は式として使用されます:

IF 式

IF(expr1,expr2,expr3)
ログイン後にコピー

If expr1 is TRUE ( expr1 <>) ; 0 および expr1 <> NULL)、IF() の戻り値は expr2 です。それ以外の場合、戻り値は expr3 です。 IF() の戻り値は、コンテキストに応じて数値または文字列値のいずれかになります。式としての

select *,if(sva=1,"男","女") as ssva from taname where sva != ""
ログイン後にコピー

if は、CASE when を使用して実装することもできます。

select CASE sva WHEN 1 THEN &#39;男&#39; ELSE &#39;女&#39; END as ssva from taname where sva != &#39;&#39;
ログイン後にコピー

最初のソリューションの戻り結果では、value=compare-value になります。 2 番目のシナリオの戻り結果は、最初のシナリオの真の結果です。一致する結果値がない場合、戻り値は ELSE 以降の結果になります。ELSE 部分がない場合、戻り値は NULL になります。

例:

SELECT CASE 1 WHEN 1 THEN &#39;one&#39;
  WHEN 2 THEN &#39;two&#39; 
   ELSE &#39;more&#39; END
as testCol
ログイン後にコピー

は 1 つを出力します

IFNULL(expr1,expr2)

expr1 が NULL でない場合、IFNULL() の戻り値は expr1 であり、それ以外の場合、その戻り値は expr2 です。 IFNULL() の戻り値は、使用されるコンテキストに応じて数値または文字列のいずれかになります。

mysql> SELECT IFNULL(1,0);        -> 1
mysql> SELECT IFNULL(NULL,10);        -> 10
mysql> SELECT IFNULL(1/0,10);        -> 10
mysql> SELECT IFNULL(1/0,&#39;yes&#39;);        -> &#39;yes&#39;
ログイン後にコピー

IFNULL(expr1,expr2) のデフォルトの結果値は、STRING、REAL、INTEGER の順で、2 つの式のうち、より「一般的」な値です。

IF ELSE はプロセス制御ステートメントとして使用されます。

if は条件判定を実装し、さまざまな条件が満たされた場合にさまざまな演算を実行します。プログラミングを学習している限り、if の役割を見てみましょう。 mysqlストアドプロシージャの使い方。

IF search_condition THEN 
    statement_list  
[ELSEIF search_condition THEN]  
    statement_list ...  
[ELSE 
    statement_list]  
END IF
ログイン後にコピー

はPHPのIF文と似ており、IFのsearch_conditionがtrueの場合はTHEN以降のstatement_list文が実行され、それ以外の場合はELSEIFの条件がtrueの場合は後続のstatement_list文が実行されます。それ以外の場合は、他のブランチの判定が継続されます。すべての分岐の条件が満たされない場合、ELSE 分岐が実行されます。 search_condition は条件式であり、「=、<、<=、>、>=、!=」などの条件演算子で構成でき、 AND、OR、NOT を使用して複数の式を組み合わせることができます。

たとえば、学生番号 (student_no) とコース番号 (course_no) を介して学生の成績 (grade) をクエリし、成績と成績を返すストアド プロシージャを作成します。成績が 90 を超えるものは成績 A、その他は成績です。成績が 90 未満の場合 スコアが 80 以上の場合はクラス B に分類され、スコアが 80 未満で 70 に等しい場合はクラス C に分類され、以下同様にクラス E に分類されます。次に、ストアド プロシージャを作成するコードは次のとおりです。

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,&#39;A&#39;;  
elseif stu_grade<90 and stu_grade>=80 then 
    select stu_grade,&#39;B&#39;;  
elseif stu_grade<80 and stu_grade>=70 then 
    select stu_grade,&#39;C&#39;;  
elseif stu_grade70 and stu_grade>=60 then 
    select stu_grade,&#39;D&#39;;  
else 
    select stu_grade,&#39;E&#39;;  
end if;  
END
ログイン後にコピー

注: IF はステートメントであり、ステートメントの終わりを示すために END IF の後にセミコロン「;」を追加する必要があります。他のステートメントについても同様です。 CASE、LOOPなどのステートメント。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

Laravel ルートリダイレクトに関する質問

以上がMySQL での if ステートメントと case ステートメントの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート