Sql 在where子句之前是否可以执行if else
我有变量,我想检查变量是否不为null或空,然后我想启动或包含where子句。想法如下。我检查了一下,但它显示语法错误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)
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,并且将返回所有记录。