2017-02-02 149 views
1

试图在sql服务器中创建存储过程,但我收到此错误。数据类型varchar和varbinary(max)在add运算符中不兼容。数据类型varchar和varbinary(max)在add运算符中不兼容。而试图创建存储过程

CREATE PROC dbo.SearchAnswers 
    @Name varchar(225), 
    @Address varchar(225), 
    @ServiceRendered varchar(225), 
    @spportedHMO varchar(225), 
    @States varchar(225), 
    @Country varchar(225), 
    @OtherServices varchar(225), 
    @Hospital_Image varbinary(225) 
AS 
SELECT * 
FROM Hospital 
WHERE Name LIKE '%' + (@Name) + '%'+'' 
    OR Address LIKE ''+'%' + (@Address) + '%'+'' 
    OR ServiceRendered LIKE ''+'%' + (@ServiceRendered) + '%'+'' 
    OR spportedHMO LIKE ''+'%' + (@spportedHMO) + '%'+'' 
    OR States LIKE '' +'%' + (@States) + '%'+'' 
    OR Country LIKE ''+ '%' + (@Country) + '%'+'' 
    OR OtherServices LIKE ''+'%' + (@OtherServices) + '%'+'' 
    OR Hospital_Image LIKE ''+'%' + Cast(@Hospital_Image as varbinary(max)) + '%' 
+0

到底为什么'@ Hospital_Image'是一些你可以用它来搜索呢? – user1429080

+0

完全忘了我不需要它,因为它不意味着成为搜索输入的一部分。我也纠正了这一点。感谢您的观察 – Mcbaloo

回答

1

您在搜索Hospital_Image时无需使用LIKE。将其更改为'='。可能检查你是否需要任何字段的LIKE;只用想搜索的字符串包含在该领域

CREATE PROC dbo.SearchAnswers 
    @Name varchar(225), 
    @Address varchar(225), 
    @ServiceRendered varchar(225), 
    @spportedHMO varchar(225), 
    @States varchar(225), 
    @Country varchar(225), 
    @OtherServices varchar(225), 
    @Hospital_Image varbinary(225) 
AS 
SELECT * 
FROM Hospital 
WHERE Name LIKE '%' + (@Name) + '%'+'' 
    OR Address LIKE ''+'%' + (@Address) + '%'+'' 
    OR ServiceRendered LIKE ''+'%' + (@ServiceRendered) + '%'+'' 
    OR spportedHMO LIKE ''+'%' + (@spportedHMO) + '%'+'' 
    OR States LIKE '' +'%' + (@States) + '%'+'' 
    OR Country LIKE ''+ '%' + (@Country) + '%'+'' 
    OR OtherServices LIKE ''+'%' + (@OtherServices) + '%'+'' 
    OR Hospital_Image = @Hospital_Image 
相关问题