在SQL LIKE中使用变量和模式匹配

时间:2015-11-14 19:26:05

标签: sql-server tsql sql-like

我有一个sql表,其中一个列是' Action' nvarchar(最大)。此列可以包含HelloKitty_1.MP4或HeMan_2.MP4或SpiderMan_1.MP4,Hulk_4.MP4等值。这里1,2,1是我所说的videoIndex。

我正在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

1 个答案:

答案 0 :(得分:0)

修改:

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

成为:

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

或者您可以使用

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