クエリステートメント:
次のクエリは、WHERE 句で CASE ステートメントを使用して、@locationType と @locationID の値に基づいてフィルタリングを試みます:
<code class="language-sql">declare @locationType varchar(50); declare @locationID int; SELECT column1, column2 FROM viewWhatever WHERE CASE @locationType WHEN 'location' THEN account_location = @locationID WHEN 'area' THEN xxx_location_area = @locationID WHEN 'division' THEN xxx_location_division = @locationID END;</code>
エラー:
CASE 式は単一の戻り値を期待しているため、このクエリでは構文エラーが発生します。さまざまな WHEN 句に、CASE 式ではない等価比較 (= @locationID) が誤って含まれていました。
解決策:
WHERE 句で CASE ステートメントを使用するための正しい構文は、式をターゲット列に割り当てることです。
<code class="language-sql">declare @locationType varchar(50); declare @locationID int; SELECT column1, column2 FROM viewWhatever WHERE @locationID = CASE @locationType WHEN 'location' THEN account_location WHEN 'area' THEN xxx_location_area WHEN 'division' THEN xxx_location_division END;</code>
この変更されたクエリでは、CASE 式は @locationType の値に基づいて、対応する位置識別子を返します。次に、WHERE 句はこの値を @locationID と比較して、期待どおりに結果をフィルターします。
以上がSQL WHERE 句で CASE ステートメントを条件付きフィルタリングに使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。