我有一个users
表,其中categories
列带有分隔值。
我正在尝试传递一个类别,并使用动态SQL中的users表执行类似的搜索。
类别值是参数化的。
DECLARE @SQLQuery AS NVARCHAR(4000)
DECLARE @ParamDef AS NVARCHAR(2000)
SET @ParamDef = '@category VARCHAR(100)'
SET @SQLQuery = 'UPDATE [U]
SET [U].[status] = 1
FROM [dbo].[users] AS [U]
WHERE [U].[categories] LIKE ??
EXECUTE SP_EXECUTESQL @SQLQuery ,@ParamDef ,@category
我希望我的搜索功能可以检查%,@ category,%
答案 0 :(得分:0)
你是否试图像这样形成查询?
DECLARE @SQLQuery AS NVARCHAR(4000)
DECLARE @ParamDef AS NVARCHAR(2000)
SET @ParamDef = '@category VARCHAR(100)'
SET @SQLQuery = 'UPDATE [U]
SET [U].[status] = 1
FROM [dbo].[users] AS [U]
WHERE [U].[categories] LIKE '''+ '%' + @category + '%' + ''''
EXECUTE SP_EXECUTESQL @SQLQuery ,@ParamDef ,@category
如果有帮助,请告诉我。 谢谢 阿什拉夫
答案 1 :(得分:0)
您是否必须使用动态SQL?它易受SQL注入的影响,特别是如果您在UI中使用@category。
您可以改为使用以下内容来完成相同的操作:
DECLARE @category VARCHAR(100)
UPDATE [U]
SET [U].[status] = 1
FROM [dbo].[users] AS [U]
WHERE [U].[categories] LIKE '%,' + @category + ',%'
否则,您似乎已经使用动态SQL找到了解决方案。