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

本文介绍了一种在SQL中使用参数化方式执行带有IN关键字的删除操作的方法,并详细解释了如何处理字符串参数中的单引号问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 在代码中有如下的需求:需要在数据库中使用 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+')')

 

转载于:https://www.cnblogs.com/yougmi/p/5238144.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值