2015-11-14 25 views
0

我有一個sql表,其中'Action'列中的一列是nvarchar(max)。此列可以具有像HelloKitty_1.MP4或HeMan_2.MP4或SpiderMan_1.MP4,Hulk_4.MP4這樣的值。這裏的1,2,1就是我所說的videoIndex。在SQL中使用變量和模式匹配LIKE

我正在寫一個SQL存儲過程,其中我傳入videoIndex(int)並返回包含該索引的所有行。所以在上面的例子中,如果傳入1,它應該返回給我HelloKitty_1.MP4和SpiderMan_1.MP4。

我做了下面的代碼片段,但是我得到了這個錯誤:「將varchar值'%_'轉換爲數據類型爲int時轉換失敗。

DECLARE @SearchPattern varchar(40) 
SET @SearchPattern = '%' + '_' + @videoindex + '.MP4' 

DECLARE @WatchVideoCount int; 
SET @WatchVideoCount = 
    (SELECT count(*) 
    FROM [dbo].[VideoWatched] 
    WHERE 
    [Action] LIKE @SearchPattern) 

SELECT @WatchVideoCount as TotalTimesUsersWatchedVideo, @videoindex as videoIndex 

回答

0

修改此:

SET @SearchPattern = '%' + '_' + @videoindex + '.MP4' 

爲:

SET @SearchPattern = '%' + '_' + CAST(@videoindex AS varchar(30)) + '.MP4' 

或者你可以使用

SET @SearchPattern = CONCAT('%' , '_' , @videoindex , '.MP4') 
+0

或者你可以使用'SET @SearchPattern = CONCAT('% ','_',@videoindex,'.MP4')' – wajeeh

+0

太好了。謝謝。我鑄造它,它的工作! – SweetNeetu

+0

歡迎:) – wajeeh