我有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
值,则搜索正常param1
和param2
值,那么它也可以正常使用但是,如果用户没有输入param1
值,只输入param2
值,则搜索无效。
我相信这是因为我的临时表是空的,当我们进行连接时它什么都不返回。
要使其正常工作的任何解决方法吗?
由于
答案 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)
你应该在这里使用左连接。