sql2000中,这样的exec有replace怎么语法出错呀?怎么改进呀?
例子代码如下:declare @sql varchar(8000)
set @sql='select * from RE where id>10'
exec(  REPLACE(@sql,'RE','sh_peishun')  )

解决方案 »

  1.   

    第 3 行: 'REPLACE' 附近有语法错误。  错在哪里呀?
      

  2.   

    sql是不区分大小写的,你替换re 把where给替换没了。
      

  3.   


    declare @sql varchar(8000)
    set @sql='select * from RE where id>10'
    set @sql=REPLACE(@sql,'RE','sh_peishun')
    select @sql
    /*
    select * from sh_peishun whesh_peishun id>10
    */
    --exec(@sql)这样明白了吧?
      

  4.   

    如果要实现你的效果,可以这样:declare @sql varchar(8000)
    set @sql='select * from RE where id>10'
    set @sql=REPLACE(@sql,' RE ',' sh_peishun ')
    select @sql
    /*
    select * from sh_peishun where id>10
    */
    --exec(@sql)
      

  5.   


    --这样修改吧
    declare @sql varchar(8000)
    set @sql='select * from [RE] where id>10'
    exec(  REPLACE(@sql,'[RE]','[sh_peishun]')  )
      

  6.   

    我换成了R9了.其实R9是用来代替了一个很长的字符的,如果全代码都放在@sql变量中,会超过8000的
    如果像你这样的话 set @sql=REPLACE(@sql,'RE','sh_peishun'),会超过了8000字符了的.exec()中不可以放有replace函数吗?
    declare @sql varchar(8000)
    set @sql='select * from R9 where id>10'
    exec(  REPLACE(@sql,'R9','sh_peisdfdfsdsdsdfsdssssfksdkflsdflsjdfsdfsdfsdfsfssssssshun')  )
      

  7.   

    exec 后面括号和replace之间的空格的全角或是半角需要注意一下。
      

  8.   

    说这个例子,主要是想问,exec( replace() )中,replace()是否可以放到exec()中的.
      

  9.   

    declare @sql varchar(8000)
    set @sql='select * from RE'
    set @sql = REPLACE(@sql,'RE','dbo.book') 
    exec(@sql)
    --EXEC接受一个常量或变量,加函数不行
      

  10.   


    exec(replace('select ''aaa''','a','b'))测试一下就知道了,不行