需要SQL查询输入

时间:2017-03-17 09:52:38

标签: sql sql-server

我有UI,其中有搜索功能。搜索中有2个参数。

用户可以搜索两个参数中的任何一个以获得结果(即其中任何一个都可以为空)

当其中一个值为null时,我很难写出确切的sql(SP)。

例如如下:

declare @param1, @param2

create table #Ids
(
  Id bigint,
  Name varchar(10)
)

--Inserting multiple ids in my temp table
IF @param1 IS NOT NULL
BEGIN
    INSERT INTO #Ids (Id, Name)
        SELECT DISTINCT Id, Name 
        FROM MainIdTable I 
        WHERE (I.Name = @param1)
END

SELECT
    I.Name, S.ID, S.Value 
FROM
    SecondTable S 
JOIN
    #Ids I ON S.Id = P.Id
WHERE
    S.Date = '2012-01-06'
    AND s.tempId = ISNULL(@param2, p.tempId)
  • 如果用户输入param1值,则搜索正常
  • 如果用户同时输入param1param2值,那么它也可以正常使用

但是,如果用户没有输入param1值,只输入param2值,则搜索无效。

我相信这是因为我的临时表是空的,当我们进行连接时它什么都不返回。

要使其正常工作的任何解决方法吗?

由于

1 个答案:

答案 0 :(得分:0)

Select I.Name, S.ID, S.Value from
  SecondTable S 
  LEFT JOIN #Ids I on S.Id = P.Id
  where S.Date = '2012-01-06'
  and s.tempId = isnull(@param2, p.tempId)

你应该在这里使用左连接。