Maison >base de données >tutoriel mysql >Comment implémenter une clause WHERE conditionnelle dans SQL Server sans Dynamic SQL ?

Comment implémenter une clause WHERE conditionnelle dans SQL Server sans Dynamic SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-18 11:06:09779parcourir

How to Implement a Conditional WHERE Clause in SQL Server Without Dynamic SQL?

Clause WHERE conditionnelle dans SQL Server

Question :

Comment implémenter une clause WHERE conditionnelle dans SQL Server sans utiliser de SQL dynamique ni créer plusieurs requêtes avec des clauses différentes ?

Réponse :

Vous pouvez utiliser les méthodes suivantes :

<code class="language-sql">SELECT 
    DateAppr,
    TimeAppr,
    TAT,
    LaserLTR,
    Permit,
    LtrPrinter,
    JobName,
    JobNumber,
    JobDesc,
    ActQty,
    (ActQty-LtrPrinted) AS L,
    (ActQty-QtyInserted) AS M,
    ((ActQty-LtrPrinted)-(ActQty-QtyInserted)) AS N
FROM 
    [test].[dbo].[MM]
WHERE 
    DateDropped = 0
    AND (
    (ISNULL(@JobsOnHold, 0) = 1 AND DateAppr >= 0) 
    OR 
    (ISNULL(@JobsOnHold, 0) <> 1 AND DateAppr <> 0)
    )</code>

Dans cette requête :

    La fonction
  • ISNULL() vérifie si le paramètre @JobsOnHold est vide et renvoie 0 s'il est vide.
  • L'expression conditionnelle entre parenthèses vérifie la valeur du paramètre @JobsOnHold. Si la valeur est 1, la colonne DateAppr doit être supérieure ou égale à 0. Si la valeur est différente de 1, la colonne DateAppr ne doit pas être égale à 0.
  • L'opérateur
  • AND s'assure que les deux conditions sont remplies.

Cette approche vous permet d'utiliser une seule requête et une clause WHERE conditionnelle pour filtrer les résultats en fonction de la valeur d'un paramètre. Il s'agit d'une manière plus efficace et plus concise d'écrire de telles requêtes que d'utiliser plusieurs requêtes ou du SQL dynamique.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn