Utilisation de l'instruction IF dans la clause MS SQL WHERE
Est-il possible d'intégrer une instruction IF dans la clause WHERE de MS SQL ? Par exemple, la syntaxe suivante est-elle valide ?
<code class="language-sql">WHERE IF IsNumeric(@OrderNumber) = 1 OrderNumber = @OrderNumber ELSE OrderNumber LIKE '%' + @OrderNumber + '%'</code>
Solution :
La syntaxe ci-dessus n'est pas valide. La même fonctionnalité peut être obtenue en utilisant l'instruction CASE :
<code class="language-sql">WHERE OrderNumber LIKE CASE WHEN IsNumeric(@OrderNumber) = 1 THEN @OrderNumber ELSE '%' + @OrderNumber + '%' END</code>
Alternativement, une instruction IF peut être utilisée, mais dans une procédure stockée ou une autre structure de flux de contrôle :
<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>
Il convient de noter que l'utilisation de l'instruction IF directement dans la clause WHERE n'est pas autorisée. L'instruction CASE fournit une manière plus concise et conforme à SQL de gérer la logique conditionnelle. Si vous devez utiliser une instruction IF, vous devez la placer dans une procédure stockée ou dans un autre environnement autorisant les instructions de flux de contrôle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!