590
社区成员
发帖
与我相关
我的任务
分享
and c.ID = (case when /*@p4*/'' = '' then c.ID else /*@p4*/'' end)
改为
AND (@p4='' OR c.ID=@p4)
2.
and (case when '' = '@p3' then 'b.Id = b.Id' else 'a.code like ''%%'' or a.cardNo like ''%%''' end)
改为
AND (@p3='' OR a.Code LIKE '%%' AND a.CardNo LIKE '%%')
DECLARE @str INT = 2
DECLARE @sql NVARCHAR(MAX)= 'select * from test where '
+ CASE WHEN @str = 1 THEN '1=1'
ELSE '1=2'
END
--PRINT ( @sql )
EXEC(@sql)
可以用PRINT输出拼接完的语句看看对不对,如果没问题用EXEC执行;楼主可以百度一下sql动态拼接 and (case when '' = '@p3' then 'b.Id = b.Id' else 'a.code like ''%%'' or a.cardNo like ''%%''' end)
这句有问题,这句最后得到一个字符串 'a.code like ''%%'' or a.cardNo like ''%%''',报错了,如果想动态拼接sql,前边那些select也得一起动态拼接