如何在SQL Server存储过程中使用if/else

Sea*_*dge 1 sql sql-server stored-procedures

我有以下存储过程:

ALTER PROCEDURE [dbo].[Provider]
(@strPro varchar(200))
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT * 
    FROM [db1].[dbo].[table1]
    WHERE [Name] = @strPro
END
Run Code Online (Sandbox Code Playgroud)

我有一个下拉列表,其中包含以下条目:

All People
John D.
Mike K.
Alan H.
Paul Q.
Run Code Online (Sandbox Code Playgroud)

如何修改存储过程,这样,如果用户选择All PeopleWHERE声明将是一个LIKE,而不是一个=符号

例:

ALTER PROCEDURE [dbo].[Provider]
(@strPro varchar(200))
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT * 
    FROM [db1].[dbo].[table1]

    if @strPro = 'All People'
    BEGIN
        WHERE [Name] LIKE '%'
    END
    ELSE
    BEGIN
        WHERE [Name] = @strPro
    END
END
Run Code Online (Sandbox Code Playgroud)

Yur*_*ter 7

像这样

SELECT * FROM [db1].[dbo].[table1]
WHERE @strPro = 'All People' OR [Name] = @strPro
Run Code Online (Sandbox Code Playgroud)

如果"All People"被传递 - 第一个条件将成立并且所有记录将被返回(您不需要这样做LIKE '%')否则只返回匹配[Name]的记录.

  • 你知道吗,它是在当天晚些时候,我的大脑被炒了......你是对的:)它不应该是粗鲁的,虽然它可能听起来像它.我很抱歉. (2认同)