SQL CASE Statement–Simple and Searched Forms
SQL CASE式の主な目的は、一つ以上の条件付きテストに基づいて値を返します。 Sql文式の任意の場所で使用することができます。 本当に表現ですが、一部の人々はそれらを”CASE文”と呼んでいます。”これは、プログラミング言語での使用に起因する可能性が最も高いです。
SQL CASE式は非常に汎用性が高く、SQLServerクエリ全体で使用されます。 特に、SELECT列リスト、GROUP BY、HAVING、およびORDER BY句で使用されます。 CASE式は、データを標準化(美化)したり、ゼロ除算などのエラーから保護するためのチェックを実行したりします。
このレッスンのすべての例は、Microsoft SQL Server Management StudioおよびAdventureworks2012データベースに基づいています。 私の無料ガイドと無料のMicrosoftツールを使用してSQL Serverの使用を開始します。
SQL Server CASEステートメント
CASE句には、simpleとsearchの2つの形式があります。 両方のフォームは、式のテストに基づいて結果を返します。 技術的には表現ですが、多くの人がそれを声明として参照しているのを見るでしょう。
単純なSQL CASE文は、等価性テストに使用されます。 これは、複数の値に対して一つの式をテストし、これは、そのような対応する長い形式に略語として、値の一つのセットを変換するためにそれが素晴ら
検索されたSQL CASE文では、より包括的な式評価形式が使用されます。 給与の範囲や年齢など、データの範囲で作業したい場合に適しています。
まず単純な形式から始め、次に検索をカバーします。
CASE expression Simple Form
CASE式の単純な形式は、式の結果を一連のテストと比較し、”test”がtrueを返すときに”result”を返します。
単純なフォームCASE式の一般的な形式は次のとおりです。
CASE expression
WHEN test THEN result
…
ELSE otherResult
END
ELSEステートメントはCASE式ではオプションです。 一致が行われず、ELSEが存在する場合は、”otherResult”を返します。 CASE文にELSEがない場合は、NULLを返します。ELSE句は、不正なデータ値や予期しないデータ値をキャッチし、NULL以外の結果を返すのに最適な方法です。
データ変換の例
CASEステートメントを使用するには、いくつかの理由があります。 最初は、ある値のセットから別の値のセットにデータを変換することです。 たとえば、従業員の性別を”男性”または”女性”として表示するには、データが”M”または”F”としてエンコードされている場合、CASE式を使用して単一の文字表現をテス
この例は次のようになります。
:
SELECT JobTitle,
CASE Gender
WHEN 'M' THEN 'Male'
WHEN 'F' THEN 'Female'
ELSE 'Unknown Value'
END
FROM HumanResources.Employee
データ標準化の例
同様に、単純なCASE句を使用して複数の値を一つに標準化することができます。 この例を拡張すると、いくつかのバリエーションが男性または女性のいずれかにマップされます。
データベース内に別のテーブルを作成し、それを使用して値を検索できるかどうか疑問に思うかもしれません。 私はそれが最善であることに同意する傾向がありますが、多くの状況では、データベースにテーブルを作成する権限がありません。 この場合、SELECT文が提供する知恵に任されます。
Summary
単純なCASE式を使用するときに考慮すべきことがいくつかあります。
- は等価比較のみを許可します。
- 評価テストは定義された順序で評価されます。
- 最初の真のテストに対応する結果を返します。
- 一致が行われない場合、ELSEが存在しない限り、caseはNULLを返します。
CASE式の検索フォーム
CASE式の検索フォームは、より汎用性の高いテストを可能にします。 これを使用して、より広い範囲のテストを評価します。 実際には、任意のブール式はテストとしての資格があります。
CASE式から検索された式は次の形式になります
CASE
WHEN booleanExpression THEN result
…
ELSE otherResult
END
検索された形式では、When句を使用してブール式を評価します。 最初の真のブール式の結果が返されます。
以下は、前のセクションの従業員の性別の例の検索されたケース形式です。
この同じ例を単純なSQL case文にも使用しました。 あなたが微妙な違いを見ることができるように私はこれをしました。 各WHEN句には、ブール式としてテストが含まれていることに注意してください。
単純なフォームと検索されたフォームのSQLケースの比較
ここでは、ステートメントを並べています。
Leave a Reply