sql >> データベース >  >> RDS >> SQLite

SQLiteケース

    概要: このチュートリアルでは、SQLiteのCASEについて学習します。 条件付きロジックをクエリに追加する式。

    SQLiteのCASE 式は条件のリストを評価し、評価の結果に基づいて式を返します。

    CASE 式はIF-THEN-ELSEに似ています 他のプログラミング言語でのステートメント。

    CASEを使用できます 有効な式を受け入れる任意の句またはステートメントの式。たとえば、CASEを使用できます WHEREなどの句の式 、ORDER BYHAVINGSELECT およびSELECTなどのステートメント 、UPDATE 、およびDELETE

    SQLiteはCASEの2つの形式を提供します 式:単純なCASE CASEを検索しました 。

    SQLiteのシンプルなCASE

    シンプルなCASE expressionは、式を式のリストと比較して結果を返します。以下に、単純なCASEの構文を示します。 表現。

    CASE case_expression
         WHEN when_expression_1 THEN result_1
         WHEN when_expression_2 THEN result_2
         ...
         [ ELSE result_else ] 
    ENDCode language: SQL (Structured Query Language) (sql)

    シンプルなCASE 式はcase_expressionを比較します 式は最初のWHENに表示されます 句、when_expression_1 、平等のために。

    case_expressionの場合 when_expression_1と等しい 、単純なCASE 対応するTHENの式を返します result_1である句 。

    それ以外の場合は、単純なCASE 式はcase_expressionを比較します 次のWHENの式で 条項。

    case_expressionがない場合 when_expressionと一致します 、CASE 式はresult_elseを返します ELSEで 句。 ELSEを省略した場合 句、CASE 式はNULLを返します。

    シンプルなCASE 式は短絡評価を使用します。つまり、結果を返し、一致するものが見つかるとすぐに他の条件の評価を停止します。

    シンプルなCASE

    customersを見てみましょう サンプルデータベースのテーブル。

    顧客が米国にいる場合、この顧客は国内グループに属し、そうでない場合、顧客は外国グループに属するという論理を使用して、顧客グループのレポートを作成する必要があるとします。

    このレポートを作成するには、単純なCASEを使用します SELECTの式 次のようなステートメント:

    SELECT customerid,
           firstname,
           lastname,
           CASE country 
               WHEN 'USA' 
                   THEN 'Domestic' 
               ELSE 'Foreign' 
           END CustomerGroup
    FROM 
        customers
    ORDER BY 
        LastName,
        FirstName;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    SQLiteはCASEを検索しました 式

    検索されたCASE expressionは、式のリストを評価して結果を決定します。単純なCASEに注意してください 検索されたCASEが等しいかどうかを比較するのは、式のみです。 式は任意の形式の比較を使用できます。

    以下に、検索されたCASEの構文を示します。 表現。

    CASE
         WHEN bool_expression_1 THEN result_1
         WHEN bool_expression_2 THEN result_2
         [ ELSE result_else ] 
    ENDCode language: SQL (Structured Query Language) (sql)

    検索されたCASE expressionは、指定された順序でブール式を評価し、式がtrueと評価された場合は、対応する結果を返します。

    trueと評価される式がない場合、検索されたCASE expressionは、ELSEの式を返します 指定されている場合は句。 ELSEを省略した場合 句、検索されたCASE 式はNULLを返します 。

    単純なCASEに似ています 式、検索されたCASE 式は、条件が満たされると評価を停止します。

    検索されたCASE

    tracksを使用します デモンストレーション用のテーブル。

    1分未満などの長さに基づいてトラックを分類したい場合、トラックは短いです。 1〜5分の間、トラックは中程度です。 5分を超えると、トラックが長くなります。

    これを実現するには、検索されたCASEを使用します 次のような表現:

    SELECT
    	trackid,
    	name,
    	CASE
    		WHEN milliseconds < 60000 THEN
    			'short'
    		WHEN milliseconds > 60000 AND milliseconds < 300000 THEN 'medium'
    		ELSE
    			'long'
    		END category
    FROM
    	tracks;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    このチュートリアルでは、SQLite CASEについて学習しました。 SQLクエリ内に条件付きロジックを形成する式。


    1. ORA-01861:リテラルがフォーマットstringと一致しません

    2. オンライン求人ポータルデータモデルの改善

    3. Oracleシーケンスを既存の列の次の値にリセットする最良の方法は?

    4. OracleのJSON_OBJECTAGG()関数