对变量SQL Server的if语句

时间:2018-01-05 13:56:51

标签: sql-server tsql

当我运行程序(下面)时,"执行程序"弹出框请求一个我期望的值。如果我完成了值或传递了一个空值,它将按预期运行。

我所追求的是,​​如果我没有选择传递空值或将值字段留空,则查询将针对所有字段运行,实际上忽略了该行:

Where userid = @userID

希望这是有道理的,这可能吗?

这是我执行的查询(我没有创建):

SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  

ALTER PROCEDURE [dbo].[Codename]   
    @userID NVARCHAR(MAX)
AS  
    EXECUTE dbo.ProcedureToRun @userID  
    RETURN 0  

它执行的查询(过程中有几种类型的查询)

SELECT DISTINCT(Screen), COUNT(*) AS Visits  
FROM HitCounters  
WHERE userid = @userID  
  AND HitDate > DATEADD(day, -30, GETDATE())  
GROUP BY Screen

谢谢,

2 个答案:

答案 0 :(得分:0)

将此条件添加到where子句julia> Meta.quot(:foo) :(:foo) julia> Expr(:quote, :foo) :(:foo)

@userID is null

答案 1 :(得分:0)

如果@userID为空

,如何选择所有记录
Select distinct(Screen), count(*) AS Visits  
From HitCounters  
Where (
    userid = @userID  OR
        @userID IS NULL
    )
    AND HitDate  > DATEADD(day, -30, GETDATE())  
Group By Screen