本文介绍了在 where 子句中使用 CASE 时出现语法错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此处

无论如何,我遇到了一个我无法理解的语法错误.

Anyway i get a syntax error i cannot figure.

这是我的代码:

declare @MyParameter integer
se @MyParameter = Set At Runtime (could be -1 or any value >=1)

SELECT manyfields FROM manyjoinedtables
where
 case when @MyParameter> -1 then
 (FIELD1 **=** @MyParameter AND ANOTHERFIELD = Value**)**
 end -- note: in case @MyParameter  = -1 i do not want to add where condition

无论如何,管理工作室用红色强调上面用**包围的2个字符.

Anyway Management studio underlines in red the 2 chars surrounded by ** above.

为什么?语法错误在哪里?

Why? Where is the syntax error?

推荐答案

试试这个;

DECLARE @MyParameter INT
SET @MyParameter = Set At Runtime (could be -1 or any value >=1)

SELECT manyfields
FROM manyjoinedtables
WHERE
    @MyParameter <= -1
OR
(
    @MyParameter > -1
    AND FIELD1 = MyParameter
    AND AnotherField = Value
)

这篇关于在 where 子句中使用 CASE 时出现语法错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-12 03:29