SQL WHERE 句での動的データ フィルタリング
SQL は、IF
句内の WHERE
ステートメントを直接サポートしていませんが、代替方法を使用して条件付きフィルタリングを実現できます。 これにより、特定の条件に基づいた柔軟なデータ取得が可能になります。
CASE ステートメントのアプローチ:
CASE
ステートメントは、データを条件付きでフィルターする強力な方法を提供します。条件を評価し、結果に基づいて値を返します。 WHERE
句内では、次のようになります:
<code class="language-sql">WHERE field LIKE CASE WHEN condition THEN result ELSE result END</code>
たとえば、@OrderNumber
が数値かどうかに基づいてフィルタリングしたいとします。 数値の場合は完全一致を使用します。それ以外の場合は、ワイルドカード検索を使用します:
<code class="language-sql">WHERE OrderNumber LIKE CASE WHEN IsNumeric(@OrderNumber) = 1 THEN @OrderNumber ELSE '%' + @OrderNumber + '%' END</code>
IF による条件代入 (手続き型アプローチ):
もう 1 つの方法では、WHERE
句の外側で条件付き代入を使用してフィルタリング値を準備します。 これはより手続き的なアプローチです:
<code class="language-sql">IF condition SET field = value; ELSE SET field = value;</code>
これを @OrderNumber
の例に適用すると、次のようになります。
<code class="language-sql">IF IsNumeric(@OrderNumber) = 1 SET @OrderNumber_Filtered = @OrderNumber; ELSE SET @OrderNumber_Filtered = '%' + @OrderNumber + '%';</code>
次に、@OrderNumber_Filtered
句で WHERE
を使用します。
<code class="language-sql">WHERE OrderNumber LIKE @OrderNumber_Filtered;</code>
CASE
句内の WHERE
と WHERE
句の前の条件付き代入の両方により、データ フィルタリングの条件付きロジックを実装する効果的な方法が提供され、SQL クエリの能力と適応性が強化されます。
以上がSQL の WHERE 句で条件付きロジック (IF/CASE) を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。