SQL 喜欢 int
SQL LIKE with int
是否有与我们与 varchar
一起使用的 LIKE
等效的东西可以与 int
一起使用?
我想用三个 parameters
进行过滤,其中两个是 varchar
,所以我可以使用 LIKE
,如果我得到一个空字符串,我仍然可以检索所有记录。但是我怎样才能用 int
实现类似的事情
我想检索,即使 fkProductTypeID
不存在:
这是我的查询:
select * from Product
where Code like '%'+ @code +'%' AND name LIKE '%'+ @name +'%'
AND fkProductTypeID = @ptype
我希望它能够检索结果,即使我提供的 ID 不存在。从前端,如果我在 @code
中传递 ' ',在 @name
中传递 ' ' 并在 @ptype
中传递 0 我希望它检索所有记录
你可以使用这个:
select * from Product
where Code like '%'+ @code +'%' AND name LIKE '%'+ @name +'%'
AND (@ptype IS NULL OR fkProductTypeID = @ptype)
如果它在 stored-procedure 你应该使用 IF ... ELSE
:
CREATE PROCEDURE dbo.SP_Name(@ptype int, @code varchar(1000), @name varchar(1000))
AS
BEGIN
IF @ptype IS NULL
BEGIN
select * from Product
where Code like '%'+ @code +'%' AND name LIKE '%'+ @name +'%'
END
ELSE
BEGIN
select * from Product
where Code like '%'+ @code +'%' AND name LIKE '%'+ @name +'%'
AND fkProductTypeID = @ptype
END
END
这是你想要的吗?
select *
from Product
where Code like '%'+ @code +'%' AND name LIKE '%'+ @name +'%' AND
(fkProductTypeID = @ptype or @ptype is null);
值 ''
对于整数没有意义。并且,不要混合类型进行比较。为此,只需使用 NULL
。
这样可以
select * from Product
where CASE WHEN @code>0 THEN Code ELSE 0 END like '%'+ @code +'%'
AND name LIKE '%'+ @name +'%'
AND fkProductTypeID = @ptype
是否有与我们与 varchar
一起使用的 LIKE
等效的东西可以与 int
一起使用?
我想用三个 parameters
进行过滤,其中两个是 varchar
,所以我可以使用 LIKE
,如果我得到一个空字符串,我仍然可以检索所有记录。但是我怎样才能用 int
我想检索,即使 fkProductTypeID
不存在:
这是我的查询:
select * from Product
where Code like '%'+ @code +'%' AND name LIKE '%'+ @name +'%'
AND fkProductTypeID = @ptype
我希望它能够检索结果,即使我提供的 ID 不存在。从前端,如果我在 @code
中传递 ' ',在 @name
中传递 ' ' 并在 @ptype
中传递 0 我希望它检索所有记录
你可以使用这个:
select * from Product
where Code like '%'+ @code +'%' AND name LIKE '%'+ @name +'%'
AND (@ptype IS NULL OR fkProductTypeID = @ptype)
如果它在 stored-procedure 你应该使用 IF ... ELSE
:
CREATE PROCEDURE dbo.SP_Name(@ptype int, @code varchar(1000), @name varchar(1000))
AS
BEGIN
IF @ptype IS NULL
BEGIN
select * from Product
where Code like '%'+ @code +'%' AND name LIKE '%'+ @name +'%'
END
ELSE
BEGIN
select * from Product
where Code like '%'+ @code +'%' AND name LIKE '%'+ @name +'%'
AND fkProductTypeID = @ptype
END
END
这是你想要的吗?
select *
from Product
where Code like '%'+ @code +'%' AND name LIKE '%'+ @name +'%' AND
(fkProductTypeID = @ptype or @ptype is null);
值 ''
对于整数没有意义。并且,不要混合类型进行比较。为此,只需使用 NULL
。
这样可以
select * from Product
where CASE WHEN @code>0 THEN Code ELSE 0 END like '%'+ @code +'%'
AND name LIKE '%'+ @name +'%'
AND fkProductTypeID = @ptype