我目前有一个查询,它将根据任何内容从我的数据库中提取大量信息where
我想使用的条件。
declare @CaseNum char(7),
@ImportId char,
@FormatId char,
@SessionId char(5)
set @CaseNum = '' --I can place the value that I want to search by in here
set @ImportId = ''
set @FormatId = ''
set @SessionId = ''
--------------------
query in here
--------------------
where
gr.[CaseNum] = @CaseNum --currently I have to comment the ones I'm not using out
--im.[ImportId] = @ImportId
--fr.[FormatId] = @FormatId
--se.[SessionId] = @SessionId
我希望能够取出注释部分并简单地显示所有行(如果参数 = '')
例如,如果我使用set @CaseNum = '1234567'
然后它将按该参数进行搜索,如果我使用@FormatId = '12'
它将按该搜索。
我尝试过使用以下方法和其他一些尝试,但我一无所获。
where
gr.[CaseNum] = '%' + @CaseNum + '%'
and im.[ImportId] = '%' + @ImportId + '%'
and fr.[FormatId] = '%' + @FormatId + '%'
and se.[SessionId] = '%' + @SessionId + '%'
在@Norman 发布的链接的帮助下,我找到了答案。我想发布我的解决方案供其他人查看。
declare @CaseNum varchar(MAX),
@ImportId varchar(MAX)
set @CaseNum = ''
set @ImportId = ''
----------------------------------------------------------------------------
If(@CaseNum = '') --Sets the parameter to NULL for COALESCE to work
Begin
Select @CaseNum = NULL
End
If(@ImportId = '') --Sets the parameter to NULL for COALESCE to work
Begin
Select @ImportId = NULL
End
--------------------
query in here
--------------------
where
gr.[CaseNum] = COALESCE(@CaseNum, gr.[CaseNum])
and im.ImportId = COALESCE(@ImportId, im.ImportId)
此解决方案允许查询仅使用单个参数或同时使用所有参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)