在代碼中有如下的需求:需要在數據庫中使用 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+')')