我目前有一个查询,它将根据where我想使用的任何条件从数据库中提取一堆信息。
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'它,将按该参数搜索。
set @CaseNum = '1234567'
@FormatId = '12'
我已经尝试使用以下方法和其他一些尝试,但是进展并不很快。
where gr.[CaseNum] = '%' + @CaseNum + '%' and im.[ImportId] = '%' + @ImportId + '%' and fr.[FormatId] = '%' + @FormatId + '%' and se.[SessionId] = '%' + @SessionId + '%'
您可能需要考虑构建查询。
DECLARE @Number varchar(10) DECLARE @Where varchar(max) DECLARE @Query varchar(max) SET @Query = 'SELECT * FROM TestTable' SET @Where = '' SET @Number = '3' IF ISNULL(@Number, '') != '' BEGIN SET @Where = @Where + 'and testNumber = ' + @Number END IF LEN(@Where) > 0 BEGIN SET @Where = SUBSTRING(@Where, 4, LEN(@Where)) END if ISNULL(@Where, '') != '' BEGIN SET @Query = @Query + ' WHERE ' + @Where END EXEC(@Query)