Maison > base de données > tutoriel mysql > Comment puis-je implémenter une clause WHERE conditionnelle dans SQL Server pour filtrer les données en fonction d'un paramètre ?

Comment puis-je implémenter une clause WHERE conditionnelle dans SQL Server pour filtrer les données en fonction d'un paramètre ?

Linda Hamilton
Libérer: 2025-01-18 11:11:12
original
314 Les gens l'ont consulté

How Can I Implement a Conditional WHERE Clause in SQL Server to Filter Data Based on a Parameter?

Clause WHERE conditionnelle dans SQL Server

Dans SQL Server, la clause conditionnelle WHERE vous permet de spécifier différentes conditions de filtre en fonction de conditions spécifiques. Ceci est utile lorsque vous devez inclure ou exclure des données des résultats de requête en fonction de la valeur d'un paramètre ou d'une variable.

Considérez le scénario suivant :

Vous souhaitez récupérer les données d'une table nommée [MM] en fonction des critères suivants :

  • Si le paramètre @JobsOnHold est défini sur 1, les enregistrements avec une colonne DateAppr supérieure ou égale à 0 sont inclus.
  • Si le paramètre @JobsOnHold n'est pas défini sur 1, incluez les enregistrements dont la colonne DateAppr n'est pas égale à 0.

L'instruction CASE que vous avez initialement essayé d'utiliser ne fonctionne pas dans ce cas. Au lieu de cela, vous pouvez utiliser la clause WHERE conditionnelle suivante :

<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>
Copier après la connexion

Dans ce code :

  • La fonction ISNULL vérifie si le paramètre @JobsOnHold est vide. S'il est vide, sa valeur est définie sur 0 (par défaut).
  • L'expression conditionnelle dans l'opérateur AND applique la condition de filtre en fonction de la valeur du paramètre @JobsOnHold.

En utilisant des clauses WHERE conditionnelles, vous pouvez écrire des requêtes SQL plus flexibles et dynamiques sans avoir à utiliser du SQL dynamique ou des solutions de contournement impliquant des instructions if-else. Pour plus d'informations sur les clauses conditionnelles WHERE, consultez la documentation liée dans la réponse fournie.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal