概要: このチュートリアルでは、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 ]
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クエリ内に条件付きロジックを形成する式。