当前位置: 代码迷 >> Sql Server >> 请问SQLSERVER在存储过程中单引号的相关有关问题
  详细解决方案

请问SQLSERVER在存储过程中单引号的相关有关问题

热度:64   发布时间:2016-04-27 12:30:42.0
请教SQLSERVER在存储过程中单引号的相关问题
在写SQL分页的存储过程时,我需要这样去调用我的存储过程,参数含义就不用在解释了,就是一般的分页存储过程传参
其中,AND ", "+S_Types+"," LIKE "%, 1,%" 是我传进去的一个WHERE条件
SQL code
EXECUTE 分页过程名字 10,'查询的字段',1,'AND ", "+S_Types+"," LIKE "%, 1,%" ' ,1,15,0,30.0,'表1 LEFT JOIN 表2','表1.[id] = 表2.UserID','',''


在存储过程中,对传进来的WHERE条件语句进行了如下操作:
SQL code
Replace(@WhereStr,'"','''')


这是我想得到的执行语句
SQL code
SELECT  TOP 10 查询的字段 FROM 表1 LEFT JOIN 表2 ON 表1.[id] = 表2.UserID WHERE 其他WHERE条件 AND ', '+S_Types+',' LIKE '%, 1,%'  ORDER BY 排序条件


通过在存储过程中使用PRINT打印,也得到了我想要的SQL语句

不过,在存储过程中 通过EXEC执行的时候却出现了错误 EXEC @SQLStr

服务器: 消息 207,级别 16,状态 3,行 1
列名 'S_Types' 无效。

请教一下,在存储过程中如何才能有效的使用 单引号 这个东西呢。

------解决方案--------------------
SQL code
--参考一下 下面这句declare @sql varchar(max)declare @S_Types varchar(120)set @S_Types='col_name'set @sql='select top 10 * from a left join b on a.id=b.userid where ..... and  [email protected]_Types+'  like ''%,1,%'' order by [排序条件]  'print @sql/*select top 10 * from a left join b on a.id=b.userid where ..... and  col_name  like '%,1,%' order by [排序条件]  */
------解决方案--------------------
EXECUTE 分页过程名字 10,'查询的字段',1,'AND ", "+表1.S_Types+"," LIKE "%, 1,%" ',......
------解决方案--------------------
EXECUTE 分页过程名字 10,'查询的字段',1,'AND ", "+S_Types+"," LIKE "%, 1,%" ' ,

这里 S_Types 是你传入的参数还是查询条件里的字段名。。。
------解决方案--------------------
确认表1有S_Types字段吗?

确认那个print出来的SQL能执行通过吗.
------解决方案--------------------
S_Types --> 表2.S_Types
  相关解决方案