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>
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>
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>
Explication
ISNULL(@JobsOnHold, 0)
: Cela garantit que si @JobsOnHold
est NULL ou manquant, il est traité comme 0. 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
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!