使用Sybase。
我有一个接受多个参数的商店程序。
@ param1和@ date1将始终具有值,但@ param2,@ param3和@ date2是可选的。
我写过这样的东西。…
if 不属于那里。而且不需要:
if
SELECT * FROM table WHERE col1 = @param1 AND col2 = COALESCE(NULLIF(@param2,''), col2) AND col3 = COALESCE(NULLIF(@param3,''), col3) AND ( (@date2 IS NULL AND col4 = @date1) OR col4 IS BETWEEN @date1 AND @date2 )
最优雅的方式是将最后一部分写为:
AND col4 between @date1 and coalesce(@date2, @date1)
这样,如果@ date2为null,则条件的工作方式如下:
AND col4 between @date1 and @date1
等于:
AND col4 >= @date1 and col4 <= @date1
AND col4 = @date1