Utilisation d'instructions CASE imbriquées dans la clause WHERE dans SQL Server 2008
Lors de l'utilisation de SQL Server 2008, les utilisateurs peuvent rencontrer des difficultés lors de l'utilisation des instructions CASE dans la clause WHERE. Les messages d'erreur résultent souvent d'un placement incorrect de ces expressions conditionnelles.
Le problème fondamental est la syntaxe. L'instruction "CASE" doit être utilisée dans le cadre d'une expression et non comme l'expression elle-même. Par exemple, vous pouvez écrire :
WHERE co.DTEntered = CASE WHEN LEN('blah') = 0 THEN co.DTEntered ELSE '2011-01-01' END
Cependant, la syntaxe suivante est incorrecte :
WHERE CASE LEN('TestPerson') WHEN 0 THEN co.personentered = co.personentered ELSE co.personentered LIKE '%TestPerson' END
Pour résoudre ce problème, une approche plus appropriée consiste à utiliser une instruction OR combinée. La requête modifiée ressemble à ceci :
WHERE ( (LEN('TestPerson') = 0 AND co.personentered = co.personentered ) OR (LEN('TestPerson') <> 0 AND co.personentered LIKE '%TestPerson') )
Bien que cette approche puisse atténuer les erreurs de syntaxe, sachez que les instructions CASE fortement imbriquées dans la clause WHERE peuvent entraver l'optimisation des requêtes. La présence de ces expressions conditionnelles empêche l’utilisation de l’index, ce qui peut entraîner de mauvaises performances des requêtes.
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!