2017-02-02 83 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 
相關問題