この記事は、Gauss Squirrel Club Assistant 2 によるHuawei クラウド コミュニティ「GaussDB SQL Basic Syntax Example-CASE Expression 」から共有されたものです。
I.はじめに
SQL は、データベースにアクセスして操作するために使用される標準的なコンピューター言語です。 GaussDB は SQL 標準をサポートしています (SQL2、SQL3、SQL4 の主要機能はデフォルトでサポートされています)。
この連載では、オンラインドキュメント「Cloud Database GaussDB—SQL Reference」をもとに紹介していきます。
2. CASE 式の概要
GaussDB SQL では、CASE 式 (CASE Expression) は、SQL で条件ベースの操作を実行するために使用できる非常に強力で一般的に使用されるツールです。 CASE 式は IF-THEN-ELSE ステートメントに似ていますが、より柔軟に使用でき、読み書きも簡単です。
CASE 式には 2 つの形式が含まれており、1 つは単純形式、もう 1 つは検索形式です。これら 2 つの形式の書き方、文法、使用法を以下に紹介します。
3. GaussDB データベースの単純な CASE 式
1. 基本的な考え方
単純な CASE 式は、指定された式に対して等価ベースの比較を実行し、式が特定の値と等しい場合に演算を実行します。つまり、input_expression と when_expression の一致結果に基づいて、対応する result_expression にジャンプします。
2. 基本的な文法
CASE 入力式 WHEN when_expression THEN result_expression [...n] [ELSE else_result_expression] 終わり;
説明します:
このうち、input_expression は比較する必要がある式を表し、when_expression などは比較する必要がある値を表し、result_expression などは各値が等しい場合の結果を表し、else_result_expression は input_expression が等しくない場合のデフォルトの結果を表します。任意の値。
ヒント:
CASE: 単純な CASE 関数はサブクエリをサポートしていますが、input_expression と when_expression が一致する可能性があることに注意してください。さらに、TRUE と評価される input_expression = when_expression がない場合、ELSE 句が指定されている場合、DLI は else_result_expression を返します。ELSE 句が指定されていない場合は、NULL 値が返されます。
3. 例
従業員レベルが固定給与に基づいて定義されていると仮定すると、次の SQL に従って実行できます。
名前の選択 、給料 ,CASE給与 WHEN 15000 THEN 'ジュニア' WHEN 20000 THEN '中級' WHEN 25000 THEN 'プレミアム' WHEN 30000 THEN 'プレミアム' WHEN 35000 THEN 'プレミアム' それ以外の場合は NULL END ASレベル 会社から 給料順に注文。
SQLステートメントの解析:
テストでは、GaussDB データベースに作成された会社テーブルを使用します。
このSQLは、「会社」テーブルから従業員の名前(name)、給与(salary)、給与レベル(level)に分類されたフィールドを選択します。そして、「ORDER BY給与」ステートメントを使用して、結果を給与の低い順に並べ替えます。
単純な CASE 式の仕組み:
「給与」フィールドの値が 15000 に等しい場合、「レベル」フィールドの値は「ジュニア」になります。
「給与」フィールドの値が 20000 に等しい場合、「レベル」フィールドの値は「中級」になります。
「salary」フィールドの値が 25000、30000、または 35000 に等しい場合、「level」フィールドの値は「advanced」になります。
「salary」フィールドの値が上記のいずれの値とも等しくない場合、「level」フィールドの値は NULL になります。
4. GaussDBデータベース内のCASE式を検索
1. 基本的な考え方
CASE 式の検索とは、指定された式に対して不等式に基づく比較を実行し、式が指定された条件を満たす場合に対応する演算を実行することを意味します。つまり、各 WHEN 句の boolean_expression は指定された順序で評価されます。 TRUE と評価される最初の boolean_expression の result_expression を返します。
2. 基本的な文法
CASE WHEN ブール式 THEN 結果式 [...n] [ELSE else_result_expression] 終わり;
例証します:
このうち、boolean_expression などは比較が必要な条件を表し、result_expression などは該当する条件が満たされた場合の演算結果を表し、else_result_expression は式が条件を満たさない場合のデフォルトの結果を表します。
ヒント:
boolean_expression: サブクエリを含めることができますが、boolean_expression 式全体の戻り値はブール型のみにすることができます。
TRUE と評価される Boolean_expression がない場合、ELSE 句が指定されている場合は DLI は else_result_expression を返し、ELSE 句が指定されていない場合は NULL 値を返します。
3. 例
従業員レベルが給与範囲に基づいて定義されていると仮定すると、次の SQL に従って実行できます。
名前の選択 、給料 ,給与 < 15000 THEN '初级' の場合 給与が 15000 と 25000 の間の場合、「中级」 給与が 25000 を超える場合、「シニア」 それ以外の場合は NULL END ASレベル 会社から 給料順に注文。
SQLステートメントの解析:
このSQLは上記と同じで、「company」テーブルから従業員の名前(name)、給与(salary)を選択し、給与レベル(level)に従って分類しています。
検索 CASE 式の仕組み:
給与(給与)が15,000未満の場合、給与等級は「ジュニア」と表示されます。
給与が 15,000 ~ 25,000 (両端を含む) の場合、給与等級は「中級」としてマークされます。
給与が 25,000 を超える場合、給与等級は「シニア」としてマークされます。
上記の条件がいずれも満たされない場合、給与等級は NULL としてマークされます。
要約すると、この SQL ステートメントの主な目的は、従業員情報を取得し、給与レベルに従って分類し、給与レベルに従って並べ替えることです。
5. まとめ
GaussDB の CASE 式は、SQL で条件ベースの操作を実行し、条件判断と分岐ロジックを実装し、データベースのクエリと操作をさらに最適化するために使用できる非常に便利なツールです。 SQL コードを記述する際、特定のビジネス ニーズに応じて、単純なフォームまたは検索フォームを柔軟に選択して記述することができるため、コーディング効率とコードの可読性が大幅に向上します。
添付:二次定義タグ、飽和統計、計算インジケーター、データ形式変換などの一般的な使用シナリオ。
クリックしてフォローし、できるだけ早くHuawei Cloudの新しいテクノロジーについて学びましょう~
RustDesk、詐欺横行のため 国内サービス淘宝網(taobao.com)を停止、ウェブバージョンの最適化作業を再開、 アップルがM4チップをリリース、 高校生が成人式として独自のオープンソースプログラミング言語を作成 - ネチズンのコメント:弁護側は、 ユンフェン氏がアリババを辞任し、将来的にはWindowsプラットフォーム上で Visual Studio Code 1.89を開発する予定であると、 独立系ゲームプログラマーの目標となる Yu Chengdong氏の雇用調整が 「FFmpegの恥の柱」に釘付けになったと正式に発表した。15年前、しかし今日彼は私たちに感謝しなければなりません - Tencent QQ Videoは以前の恥を晴らしますか?華中科技大学のオープンソースミラーステーションが外部ネットワークアクセスに正式にオープン