我有一个sql表,其中'Action'中的一列是nvarchar(max)。此列可以包含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
修改这个:
SET @SearchPattern = '%' + '_' + @videoindex + '.MP4'
成为:
SET @SearchPattern = '%' + '_' + CAST(@videoindex AS varchar(30)) + '.MP4'
或者你可以使用
SET @SearchPattern = CONCAT('%' , '_' , @videoindex , '.MP4')