Database 如何在查询中同时使用LIKE和OR

Database 如何在查询中同时使用LIKE和OR,database,sql-server-2008,Database,Sql Server 2008,以下是我更改搜索书名或作者的过程的代码: ALTER PROCEDURE [dbo].[SearchBook] @Search_Var varchar(50) AS BEGIN SELECT * FROM Book WHERE BookName LIKE '%@Search_Var%' OR BookAuthor LIKE '%@Search_Var%' END 我希望它通过匹配子字符串来显示书籍,也就是说,如果书名是基础化学,那么通过键入化学,我也应该能够得到结果。 但是上面

以下是我更改搜索书名或作者的过程的代码:

ALTER PROCEDURE [dbo].[SearchBook]

@Search_Var varchar(50)

AS
BEGIN

SELECT * 
FROM Book 
WHERE 
BookName LIKE '%@Search_Var%' OR 
BookAuthor LIKE '%@Search_Var%'

END
我希望它通过匹配子字符串来显示书籍,也就是说,如果书名是基础化学,那么通过键入化学,我也应该能够得到结果。
但是上面的代码工作不正常。

您需要将搜索到的短语串联起来,如:

ALTER PROCEDURE [dbo].[SearchBook]
   @Search_Var VARCHAR(50)
AS
BEGIN
  SELECT * 
  FROM Book 
  WHERE 
    BookName LIKE '%' + @Search_Var + '%' 
    OR BookAuthor LIKE '%' + @Search_Var + '%';
END

请记住,使用
'%phrase%'
进行搜索是不可行的,查询优化器不会使用索引(如果存在任何索引)。

工作正常,谢谢..!!:-)