ALTER PROCEDURE Chinaz_News_Replace
@oldWord      varchar(1000),       -- 源字符串
@newWord      varchar(1000),       -- 新字符串
@Filed        varchar(1000)       --数据库字段
AS 
declare @strSQL   varchar(6000)       -- 主语句set @strSQL = 'UPDATE Chinaz_News SET 
'+@Filed+'=REPLACE('+@Filed+  ','''   +@oldWord+''','''+@newWord+''''+')'exec (@strSQL)当Filed为ntext类型的时候就报错了~~应该怎么该才能ntext和varchar通用
或者单独为ntext写一个该怎么写

解决方案 »

  1.   

    如果text/ntext列长度在8000字节以内,用cast(列 as varchar(8000))转为varchar类型处理,否则,无法使用这个函数。
      

  2.   

    是这么改吗?
    @oldWord      varchar(1000),       -- 源字符串
    @newWord      varchar(1000),       -- 新字符串
    @Filed   as varchar(8000)       --数据库字段
    AS 
    declare @strSQL   varchar(6000)       -- 主语句set @strSQL = 'UPDATE Chinaz_News SET 
    '+@Filed+'=REPLACE('+@Filed+  ','''   +@oldWord+''','''+@newWord+''''+')'exec (@strSQL)还是不行:函数 replace 的参数 1 的数据类型 ntext 无效。
      

  3.   

    nvarchar 允许的最大长度为8000,而text最大可以允许2,147,483,647个字符
    而数据库支持从Text到nvarchar的隐式转换,也可以将 text 数据显式转换为字符数据,但是最大长度为 8000。如果尝试进行不正确的转换,则 SQL Server 会产生错误信息。
      

  4.   

    应该分成2种情况处理,text和非text
      

  5.   

    关于updatetext修改表的用法。
    http://community.csdn.net/Expert/topic/4976/4976385.xml?temp=.6665003
      

  6.   

    看来要分2种情况处理了
    @Filed   as varchar(8000)   
    改为 @Filed   as ntext的
    时候报错:对数据类型而言运算符无效,运算符为ADD
    ntext的时候该怎么写?
      

  7.   

    强行将text转换成char,会丢失text中的数据,因为char有可能放不下text中所包含的数据