0
我有下面的工作,但想知道如果我下面有什麼可以優化或如果有更好的方式做dynamive查詢。tsql動態sql最佳方法
我有一個網頁表單,用戶輸入一個位置和收集日期。對於收集的日期,我收集了收集日期和收集日期。用戶將收件日期保留爲空,在這種情況下,它將執行比收集起始日期更長的任何操作。
請注意我如何在下面的IS NOT NULL和1 = 1。還想知道如果動態SQL是最好的方法,或者是否有一個更簡單的方法來做到這一點。
DECLARE @sql varchar(max);
SET @sql = 'SELECT * from tblProgram WHERE 1=1'
IF (@Location IS NOT NULL)
BEGIN
SET @sql = @sql + ' AND Location = ' + @Location
END
IF (@FromDateCollected IS NOT NULL AND @ToDateCollected IS NOT NULL)
BEGIN
SET @sql = @sql + ' AND pw.DateCollected >= ' + QUOTENAME(convert(varchar, @FromDateCollected,101),'''')
+ ' AND pw.DateCollected <= ' + QUOTENAME(convert(varchar, @ToDateCollected,101),'''')
END
ELSE IF (@FromDateCollected IS NOT NULL AND @ToDateCollected IS NULL)
BEGIN
SET @sql = @sql + ' AND pw.DateCollected >= ' + QUOTENAME(convert(varchar, @FromDateCollected,101),'''')
END
exec(@sql)
正常SQL有什麼問題? 'WHERE x是null還是x> date_column'? –
pw從哪裏來? –