概要: このチュートリアルでは、SQLiteのCASE
について学習します。 条件付きロジックをクエリに追加する式。
SQLiteのCASE
式は条件のリストを評価し、評価の結果に基づいて式を返します。
CASE
式はIF-THEN-ELSE
に似ています 他のプログラミング言語でのステートメント。
CASE
を使用できます 有効な式を受け入れる任意の句またはステートメントの式。たとえば、CASE
を使用できます WHERE
などの句の式 、ORDER BY
、HAVING
、SELECT
および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 ]
END
Code 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 ]
END
Code 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クエリ内に条件付きロジックを形成する式。