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