CREATE FUNCTION [dbo].[GetSalesByParameters]
(
@firstName varchar(70),
@lastName varchar(70),
@dateFrom datetime,
@dateTo datetime,
@selectValid varchar(70),
@selectCallCenters varchar(70)
)
RETURNS TABLE
AS
RETURN
(
select * from Sales
where valid = @selectValid
and firstName LIKE '%'+@firstName+'%'
)
我正在尝试创建一个能够将所有销售额存储在Sales表中的函数,但有时候参数“selectvalid”可以为null。如果该值带有值“”,我该怎么做才能从WHERE子句中删除它?
答案 0 :(得分:3)
如果@selectValid
的值为空字符串时应忽略,则只需更改以下行:
where valid = @selectValid
到
where (@selectValid = '' OR valid = @selectValid)
关于if @selectValid
是空字符串还是null,问题有点模棱两可。如果您想处理这两种情况,请尝试:
where (@selectValid IS NULL OR @selectValid = '' OR valid = @selectValid)
通常我会使用这种方法,但是如果您正在处理大型表或使用此方法遇到性能问题,那么您可能需要在此处阅读一下:
希望有所帮助。
答案 1 :(得分:2)
CREATE FUNCTION [dbo].[GetSalesByParameters]
(
@firstName varchar(70),
@lastName varchar(70),
@dateFrom datetime,
@dateTo datetime,
@selectValid varchar(70),
@selectCallCenters varchar(70)
)
RETURNS TABLE
AS
RETURN
(
select * from Sales
where (@selectValid IS NULL OR valid = @selectValid)
and firstName LIKE '%'+@firstName+'%'
)
答案 2 :(得分:1)
where (valid = @selectValid
or valid is null)
或
where (valid = @selectValid
or @selectValid is null)
(取而代之的是<> null,!= null等取决于您使用的DBMS)