Maison > base de données > tutoriel mysql > Comment implémenter des clauses WHERE conditionnelles dans SQL Server ?

Comment implémenter des clauses WHERE conditionnelles dans SQL Server ?

Linda Hamilton
Libérer: 2025-01-18 10:56:10
original
217 Les gens l'ont consulté

How to Implement Conditional WHERE Clauses in SQL Server?

Clause WHERE conditionnelle dans SQL Server

Dans SQL Server, la clause conditionnelle WHERE vous permet de spécifier des critères de filtrage des données en fonction de conditions spécifiques. Dans certains cas, vous aurez peut-être besoin d'une clause WHERE conditionnelle pour évaluer la condition et ajuster le filtre en conséquence. Voici comment construire et utiliser efficacement des clauses WHERE conditionnelles.

Grammaire

La clause conditionnelle de base WHERE suit la syntaxe suivante :

<code class="language-sql">WHERE 逻辑表达式 AND (CASE WHEN 条件 THEN 表达式1 ELSE 表达式2 END)</code>
Copier après la connexion

Exemple

Considérons l'exemple que vous avez fourni :

<code class="language-sql">SELECT
    DateAppr,
    TimeAppr,
    ...
FROM
    [test].[dbo].[MM]
WHERE
    DateDropped = 0
    AND (CASE
            WHEN @JobsOnHold = 1 THEN DateAppr >= 0
            ELSE DateAppr != 0
        END)</code>
Copier après la connexion

Cette requête tente de filtrer les données pour lesquelles DateDropped est 0 et DateAppr répond à une condition spécifique basée sur la valeur @JobsOnHold. Cependant, la syntaxe est incorrecte.

Grammaire correcte

Pour corriger les erreurs de syntaxe, placez l'expression conditionnelle entre parenthèses :

<code class="language-sql">SELECT
    DateAppr,
    TimeAppr,
    ...
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

Explication

  • ISNULL(@JobsOnHold, 0) : Cela garantit que si @JobsOnHold est NULL ou manquant, il est traité comme 0.
  • L'opérateur
  • OR s'assure que la condition fonctionne correctement dans les deux cas.

Lorsque @JobsOnHold vaut 1, DateAppr doit être supérieur ou égal à 0. Sinon, si @JobsOnHold n'est pas 1, alors DateAppr ne doit pas être 0.

Autres notes

  • Utilisez des parenthèses pour regrouper et hiérarchiser les conditions pour plus de clarté.
  • Assurez-vous que les types d'expression correspondent.
  • Évitez d'utiliser trop de conditions imbriquées car elles peuvent être difficiles à lire et à maintenir.

En suivant ces directives, vous pouvez utiliser efficacement les clauses WHERE conditionnelles dans SQL Server pour filtrer les données en fonction de critères spécifiques.

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