Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从SQL中的where子句中删除语句_Sql_Sql Function - Fatal编程技术网

如何从SQL中的where子句中删除语句

如何从SQL中的where子句中删除语句,sql,sql-function,Sql,Sql Function,我试图创建一个函数,该函数为我提供存储在sales表中的所有sales,但有时参数“selectvalid”可以为null。如果该值与值“”一起出现,如何将其从WHERE子句中删除 如果值为空字符串时应忽略@selectValid,则只需将此行更改为: CREATE FUNCTION [dbo].[GetSalesByParameters] ( @firstName varchar(70), @lastName varchar(70), @dateFrom dat

我试图创建一个函数,该函数为我提供存储在sales表中的所有sales,但有时参数“selectvalid”可以为null。如果该值与值“”一起出现,如何将其从WHERE子句中删除

如果值为空字符串时应忽略
@selectValid
,则只需将此行更改为:

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+'%'
)
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+'%'
)

关于
@selectValid
是空字符串还是空字符串,问题有点含糊不清。如果要处理这两种情况,请尝试:

where (@selectValid = '' OR valid = @selectValid)
通常我使用这种方法,但是如果您使用这种方法处理大型表或存在性能问题,那么您可能需要在这里了解一下:


希望有帮助。

如果值为空字符串时应忽略
@selectValid
,则只需将此行改为:

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+'%'
)
where (@selectValid IS NULL OR @selectValid = '' OR valid = @selectValid)

关于
@selectValid
是空字符串还是空字符串,问题有点含糊不清。如果要处理这两种情况,请尝试:

where (@selectValid = '' OR valid = @selectValid)
通常我使用这种方法,但是如果您使用这种方法处理大型表或存在性能问题,那么您可能需要在这里了解一下:

希望有帮助

where (@selectValid IS NULL OR @selectValid = '' OR valid = @selectValid)

(将is null替换为null、!=null等,具体取决于您使用的DBMS)


(将is null替换为null,!=null等,具体取决于您使用的数据库管理系统)

先生,您刚刚保存了我的工作。多谢了,先生,你刚刚救了我的饭碗。谢谢