ホームページ >データベース >mysql チュートリアル >MS SQLのWHERE句でIFステートメントを使用できますか?
MS SQL WHERE 句での IF ステートメントの使用
MS SQL の WHERE 句に IF ステートメントを埋め込むことはできますか?たとえば、次の構文は有効ですか?
<code class="language-sql">WHERE IF IsNumeric(@OrderNumber) = 1 OrderNumber = @OrderNumber ELSE OrderNumber LIKE '%' + @OrderNumber + '%'</code>
解決策:
上記の構文は無効です。 CASE ステートメントを使用して同じ機能を実現できます:
<code class="language-sql">WHERE OrderNumber LIKE CASE WHEN IsNumeric(@OrderNumber) = 1 THEN @OrderNumber ELSE '%' + @OrderNumber + '%' END</code>
ストアド プロシージャまたはその他の制御フロー構造内で IF ステートメントを使用することもできます。
<code class="language-sql">IF IsNumeric(@OrderNumber) = 1 BEGIN SELECT * FROM YourTable WHERE OrderNumber = @OrderNumber; END ELSE BEGIN SELECT * FROM YourTable WHERE OrderNumber LIKE '%' + @OrderNumber + '%'; END</code>
WHERE 句内で IF ステートメントを直接使用することは許可されていないことに注意してください。 CASE ステートメントは、条件付きロジックを処理するためのより簡潔で SQL 準拠の方法を提供します。 IF ステートメントを使用する必要がある場合は、フロー ステートメントを制御できるストアド プロシージャまたはその他の環境に IF ステートメントを配置する必要があります。
以上がMS SQLのWHERE句でIFステートメントを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。