日期:2014-05-18  浏览次数:20400 次

请帮忙看看这个存储过程是什么错误?
declare   @num   int,   @sqls   nvarchar(4000),@strWhere   nvarchar(4000)    
set   @strWhere= 'and   bigkind   like   "%中药% "   or   bigkind   like   "%西药% " '
set   @sqls= 'select   @a=count(id)   from   get_zhaoshang   where   1=1   '+   @strWhere
--print   @sqls
exec   sp_executesql   @sqls,N '@a   int   output ',@num   output  
select   @num  

报错:列名   '%西药% '   无效。

(所影响的行数为   1   行)

------解决方案--------------------
set @strWhere= 'and bigkind like ' '%中药% ' 'or bigkind like ' '%西药% ' ' '
------解决方案--------------------
N ' '%中药% ' '
------解决方案--------------------
like ' '%中药% ' ' or bigkind like ' '%西药% ' ' ' --改两个单引
------解决方案--------------------
declare @num int, @sqls nvarchar(4000),@strWhere nvarchar(4000)
set @strWhere= 'and bigkind like ' '%中药% ' ' or bigkind like ' '%西药% ' ' '
set @sqls= 'select @a=count(id) from get_zhaoshang where 1=1 '+ @strWhere
--print @sqls
exec sp_executesql @sqls,N '@a int output ',@num output
select @num

------解决方案--------------------
把 "改为两个 ' '
------解决方案--------------------
不支持雙引號造成的吧.
------解决方案--------------------
引号!!
------解决方案--------------------
set @strWhere= 'and webid like ' '%中药% ' ' or webid like ' '%西药% ' ' '
select @strWhere

result :
and webid like '%中?% ' or webid like '%西?% '
------解决方案--------------------
原则:单引号中如果还要显示单引号,需要写成 ' '来转义