SQL Server 中字符串中包含字符串变量的表示方法

 在代码中有如下的需求:需要在数据库中使用 in 关键字做删除的时候,又需要使用到参数化,参数又是字符串,所以使用的时候就按照如下方式

1             StringBuilder sql = new StringBuilder("exec('delete from Base_SysMenu where Menu_Id in('+ @ids+')') ");
2             SqlParam[] sp ={
3                                    new SqlParam("@ids",ids)
4                             };
  数据库中的执行方式如下:
  exec sp_executesql N'exec(''delete from Base_SysMenu where Menu_Id in(''+ @ids+'')'') ',N'@ids varchar(20)',@ids='''201603020530536752'''

经过以上需求后,总结:

  在SQL字符串是以单引号作为分界符的,在字符串前面和后面各一个单引号。但是字符串中也能包含单引号,为了使语法分析器能够区分字符串中的单引号还是分界符。规定当字符串中出现单引号时,在其前面添加一个单引号作为区分。也就是说, 在单引号分隔的字符串中,两个连续的单引号''表示一个单引号字符。

  参考实例:

declare @ids varchar(50)='''201603020530536752'''
exec( 'select * from Base_SysMenu where menu_id in('+@ids+')')

 

posted @ 2016-03-03 12:49  Young汨  阅读(5935)  评论(0编辑  收藏  举报