ホームページ > データベース > mysql チュートリアル > SQL の WHERE 句で IF のようなロジックを使用するにはどうすればよいですか?

SQL の WHERE 句で IF のようなロジックを使用するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-11 08:06:41
オリジナル
469 人が閲覧しました

How Can I Use IF-Like Logic in SQL WHERE Clauses?

SQL WHERE 句の条件ロジック

SQL の WHERE 句は、データベース テーブルの行をフィルタリングするために不可欠です。 SQL は条件付き実行に IF ステートメントを使用しますが、それらを WHERE 句内に直接埋め込むことは標準的な方法ではありません。 代わりに、CASE ステートメントを活用するか、一部の特定のデータベース システムでは、IF ステートメント形式を適応させます。

条件付きフィルタリングのための CASE ステートメントの利用

CASE ステートメントは、WHERE 句に IF のようなロジックを実装するクリーンな方法を提供します。 これにより、複数の条件と関連するアクションが可能になります。 例:

<code class="language-sql">WHERE OrderNumber LIKE
  CASE 
    WHEN IsNumeric(@OrderNumber) = 1 THEN @OrderNumber
    ELSE '%' + @OrderNumber + '%'
  END</code>
ログイン後にコピー

ここで、@OrderNumber が数値の場合、LIKE 句は完全一致を実行します。それ以外の場合は、部分一致にワイルドカード文字 (%) が使用されます。

データベース固有の IF ステートメントのバリエーション

特定のデータベース システム (Microsoft SQL Server など) では、IF 句内の WHERE ステートメントのバリエーションが提供されますが、構文は標準の IF ステートメントとは異なります。 多くの場合、構造は次のようになります:

<code class="language-sql">IF <condition> <true_statement> ELSE <false_statement></code>
ログイン後にコピー

この適応された WHERE 構造を使用した IF 句の例は次のようになります。

<code class="language-sql">WHERE
  IF IsNumeric(@OrderNumber) = 1
    OrderNumber = @OrderNumber
  ELSE
    OrderNumber LIKE '%' + @OrderNumber + '%'</code>
ログイン後にコピー

重要な注意事項: この IF 構文は広くサポートされているわけではありません。 実装前にデータベース システムのドキュメントを参照して互換性を確認してください。 CASE ステートメントは、さまざまな SQL データベース間での幅広い互換性を提供します。

以上がSQL の WHERE 句で IF のようなロジックを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート