如果set    @TargetValue='310000Fa001,310000Fe001'SQL怎样处理,可以将其转化为'''310000Fa001'',''310000Fe001'''???
也就是分别给'310000Fa001,310000Fe001'中每一个加两个 “ ' ” 号,应该怎样处理???

解决方案 »

  1.   

    DECLARE @TargetValue VARCHAR(100)
    set @TargetValue='310000Fa001,310000Fe001'SELECT @TargetValueSET @TargetValue = '"''310000Fa001","''310000Fe001"'  --注意单引号的转义SELECT @TargetValue--"'310000Fa001","'310000Fe001"
      

  2.   

    select '''310000Fa001'''+','+'''310000Fe001'''
    --'310000Fa001','310000Fe001'
      

  3.   

    declare @TargetValue varchar(100)
    set @TargetValue='310000Fa001,310000Fe001'select ''''''+replace(@TargetValue,',',''''',''''')+''''''--''310000Fa001'',''310000Fe001''
    select ''''''''+replace(@TargetValue,',',''''',''''')+''''''''
    --'''310000Fa001'',''310000Fe001'''
      

  4.   


    谢谢大师,小弟意思是用“SQL”函数处理转化。就像“C#”中可以“Split”得到数组,然后重新拼接,得到新的字符串。问题是:SQL中怎样转化???
      

  5.   

    --你是这意思么?
    set @TargetValue = ''''+ REPLACE(@TargetValue,',',''',''')+''''
      

  6.   


    declare @TargetValue varchar(100)set  @TargetValue='310000Fa001,310000Fe001'select  @TargetValue = ''''''''+ REPLACE(@TargetValue,',',''''',''''')+''''''''select  @TargetValue
    /*
    ----------------------------------------
    '''310000Fa001'',''310000Fe001'''*/
      

  7.   

    谢谢各位大师,谢谢。问题解决了,但小弟快让引号“ ' ” 搞晕了。运用背景:
      
         'in   ('  +@TargetValue+   ')' 直接执行存储过程传递参数:         exec    testone   @TargetValue='''310000Fa001'',''310000Fe001'''存储过程内部转化:
             
          set @TargetValue = ''''+ REPLACE(@TargetValue,',',''',''')+''''
    晕了
      

  8.   

    谢谢各位大师,谢谢。问题解决了,但小弟快让引号“ ' ” 搞晕了。运用背景:
       
      'in (' +@TargetValue+ ')' 直接执行存储过程传递参数:  exec testone @TargetValue='''310000Fa001'',''310000Fe001'''存储过程内部转化:
        
      set @TargetValue = ''''+ REPLACE(@TargetValue,',',''',''')+''''执行存储过程的参数,如果是给存储过程的参数,“  '  ”比较多。存储过程内部的参数,“  '  ”比较少,是这样吧。
      

  9.   

    大师们,nvarchar不是可变长度吗?declare @DateListSum nvarchar(100)
    为什么 “@DateListSum” 超过100了,再拼接字符串,字符显示不出来了,为什么?