sql存储过程中的多个或条件

时间:2017-12-12 15:40:47

标签: sql sql-server

我正在尝试检查if if中的多个OR条件,但是如果块仍然被执行,那么即使GUIDStatement是' ContactDetailsGUID'或者' FILECONTENTSGUID'或者' AccountGUID'。

我有一个游标,它不断为GuidStatement变量赋值。因此,在任何给定的时间点,我的@GUIDStatements变量都将具有任何单个名称 当我的GUIDStatement具有任何上述值

时,我的If条件不应该被执行

我的条件如下。请帮忙。

IF ( (@GUIDStatements <> 'ContactDetailsGUID') OR (@GUIDStatements <> 'FILECONTENTSGUID') OR (@GUIDStatements <> 'AccountGUID'))

2 个答案:

答案 0 :(得分:2)

运行以下代码。无论@GUIDStatements的值如何,第一个代码块(即代码)都返回false。如果@GUIDStatements在三个值之一中,则第二个块建议返回false,否则返回true。我想,正如我理解你的问题,那就是你正在寻找的东西。如果没有请评论,我会尝试澄清。

DECLARE @GUIDStatements SYSNAME = N'not';

--
-- your code
-------------------------------------------------
IF (
   (
       @GUIDStatements <> 'ContactDetailsGUID'
    )
    OR
   (
       @GUIDStatements <> 'FILECONTENTSGUID'
    )
    OR
   (
       @GUIDStatements <> 'AccountGUID'
    )
   )
    SELECT N'false'
ELSE
    SELECT N'true';

--
-- suggestion
-------------------------------------------------
IF @GUIDStatements IN ( 'ContactDetailsGUID', 'FILECONTENTSGUID', 'AccountGUID' )
    SELECT N'false'
ELSE
    SELECT N'true'; 

答案 1 :(得分:0)

怎么样:

IF @GUIDStatements NOT IN ('ContactDetailsGUID', 'FILECONTENTSGUID', 'AccountGUID')

也更容易维护。