Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在where子句之前是否可以执行if else_Sql_Sql Server - Fatal编程技术网

Sql 在where子句之前是否可以执行if else

Sql 在where子句之前是否可以执行if else,sql,sql-server,Sql,Sql Server,我有变量,我想检查变量是否不为null或空,然后我想启动或包含where子句。想法如下。我检查了一下,但它显示语法错误 SELECT ID, BRANCHCODE, BRANCHNAME, DEPARTMENTCODE, DEPARTMENTNAME, FROM dbo.RATINGLOGS IF (NULLIF(@BRANCHCODE, '') IS NOT NULL)

我有变量,我想检查变量是否不为null或空,然后我想启动或包含where子句。想法如下。我检查了一下,但它显示语法错误

    SELECT
        ID,
        BRANCHCODE,
        BRANCHNAME,
        DEPARTMENTCODE,
        DEPARTMENTNAME,
    FROM 
        dbo.RATINGLOGS

    IF (NULLIF(@BRANCHCODE, '') IS NOT NULL)
    BEGIN
        WHERE BRANCHCODE LIKE '%'@BRANCHCODE'%'
    END

    ORDER BY 
    RATINGTIMESTAMP OFFSET @PageSize * (@PageNumber - 1) ROWS 
    FETCH NEXT @PageSize ROWS ONLY OPTION (RECOMPILE)
您只需使用如下WHERE子句:

WHERE BRANCHCODE LIKE '%' + @BRANCHCODE + '%' OR
      NULLIF(@BRANCHCODE, '') IS NOT NULL
您只需使用如下WHERE子句:

WHERE BRANCHCODE LIKE '%' + @BRANCHCODE + '%' OR
      NULLIF(@BRANCHCODE, '') IS NOT NULL

像“%null%”这样的分支代码不会抛出错误吗?因为我只想加上‘where…’如果满足条件,或继续订购by@KIRPALSINGH . . . 不。它将计算为NULL,OR的另一个子句将被计算。Thaks,但您的答案只回答了它的一半。正如我提到的,where子句仅当且仅当变量不为null时才包含。换句话说,如果变量为null,则显示所有结果。现在,若变量为null,它不会显示任何结果如何执行。它将完全按照您的要求工作。ISNULL@BRANCHCODE,=将为true,因此或将为true,并且将返回所有记录。像“%null%”这样的branchcode是否会抛出错误?因为我只想加上‘where…’如果满足条件,或继续订购by@KIRPALSINGH . . . 不。它将计算为NULL,OR的另一个子句将被计算。Thaks,但您的答案只回答了它的一半。正如我提到的,where子句仅当且仅当变量不为null时才包含。换句话说,如果变量为null,则显示所有结果。现在,若变量为null,它不会显示任何结果如何执行。它将完全按照您的要求工作。ISNULL@BRANCHCODE,=将为true,因此或将为true,并且将返回所有记录。