日期:2014-05-18  浏览次数:20445 次

zjcxc(邹建)的ntext字段的替换处理示例
下面是邹建给出的存储过程:

--ntext字段的替换处理示例--全表替换      
       
    --测试数据      
    create       table       test(id       varchar(3),txt       ntext)      
    insert       into       test      
    select       '1 ', 'abc我是中a国人      
    deaf;sdakj21432      
    我要处理中文 '      
    go      
       
    --定义替换的字符串      
    declare       @s_str       varchar(8000),@r_str       varchar(8000)      
    select       @s_str= '      
    '       --要替换的字符串      
    ,@r_str= ' <P> '   --替换成的字符串      
       
    --替换处理      
    declare       @id       int,@ptr       varbinary(16)      
    declare       @start       int,@s       nvarchar(4000),@len       int      
    declare       @s_str1       nvarchar(4000),@s_len       int,@i       int,@step       int      
       
    select       @s_str1=reverse(@s_str),@s_len=len(@s_str)      
    ,@step=case       when       len(@r_str)> len(@s_str)      
    then       4000/len(@r_str)*len(@s_str)      
    else       4000       end      
       
    declare       tb       cursor       local       for          
    select       id,start=charindex(@s_str,[txt])-1      
    from       [test]      
    where       charindex(@s_str,[txt])> 0      
    --这里可以定义要处理的记录的条件      
       
    open       tb          
    fetch       tb       into       @id,@start      
    while       @@fetch_status=0      
    begin      
    select       @ptr=textptr([txt])      
    ,@s=substring([txt],@start+1,@step)      
    from       [test]      
    where       id=@id      
       
    while       len(@s)> =@s_len      
    begin   &nbs