假如 字符串 变量 包含单引号  我还是希望 把改字符串写入到 表中 也保留单引号 不希望替换为别的字符可是现在 insert into check_rpt (marcid,isbn,ztm) values(@marcid,@isbn,@ztm) --假如@ztm包含单引号

解决方案 »

  1.   

    内部包含单引号是无法识别转换符的,要用动态sql语句的方式拼装起来然后执行如下:--删除原对外账单结付计划主表
    set @execsql3='Delete from [nMain]'
      +'where AccNo in'
              +'(select AccNo from RiFzAcc '
                        +'where  acctype=''01'' and '  
                        +'AccPeriod in ('+@AccPeriod+') and '
                        +'TreatyNo='''+@TreatyNo+''' and '
                        +'OptType=''0'') '
              +'and flag=''2'''
    exec sp_executesql   @execsql3;
      

  2.   

    没可能,除非@ztm赋值就出错,你怎么赋值的一般应该set @ztm = 'abc''123''de'   -- 结果 @ztm 是  abc'123'de
      

  3.   

    @ztm  是传入参数 变量  包含单引号 
      

  4.   

    错了  是这里 报错 insert 是没有问题的 当变量包含单引号   set @strSQL='select count(1) from check_rpt where isbn='''+@isbn +''' and ztm='''+@ztm+'''  having count(1)>=1'
      

  5.   

    是在 组配  sql 查询字符串时  变量 包含单引号 
    报错
      

  6.   

    那你赋值前就应该 SET @A='''A' 类似这样
      

  7.   


    ALTER        procedure [dbo].checkrpt
    @marcid char(32),
    @isbn varchar(20)='',  --isbn
    @ztm nvarchar(255)='', --题名
    @fjh varchar(255)='',
    @IsRpt int OUTPUTas declare @strSQL   nvarchar(4000)
    set @strSQL='' if (@isbn<>'') and (@ztm<>'') 
    begin
    if isnull(@fjh,'')=''
      set @strSQL='select count(1) from check_rpt where isbn='''+@isbn +''' and ztm='''+@ztm+'''  having count(1)>=1'
            else