• 模拟字符串处理函数 stuff 的存储过程,对 ntext 字段进行stuff .


    转自:http://community.csdn.net/Expert/topic/3151/3151832.xml?temp=.5798609

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_stuff]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[p_stuff]
    GO

    /*--Ntext字段处理

    模拟字符串处理函数 stuff
    完成表中 ntext 字段的 stuff 处理
    注意,表中需要有列名为:id 的主键(或标识字段),数据类型为int
    如果没有这个主键字段,或者是其他类型,则对应的需要修改存储过程

    --邹建 2004.07--*/

    /*--调用示例

    --测试数据
    create table tb(id int identity(1,1),content ntext)
    insert tb select 'a;sd'
    union all select 'a;sdfkjas2qasdfdfsg45yhjhdfg45645a'

    --调用存储过程,将第8~9的字符替换成'中国'
    exec p_stuff 'tb','content',8,2,'中国',''
    select * from tb

    drop table tb
    --*/

    create proc p_stuff
    @tbname sysname,--要处理的表名
    @fdname sysname,--text/ntext字段名
    @start int=null,--开始位置,NULL表示追加数据
    @length int=null,--替换的长度
    @str nvarchar(4000),--要插入的字符串
    @where nvarchar(1000)=''--要处理的记录的条件
    as
    if @str is null return
    declare @s nvarchar(4000)
    set @s='
    declare @id int,@ptr varbinary(16),@start1 int

    declare tb cursor local for
    select id,start=datalength(['+@fdname+'])/2
    from ['+@tbname+']
    '+case isnull(@where,'') when '' then ''
    else ' where '+@where end+'

    open tb
    fetch tb into @id,@start1
    while @@fetch_status=0
    begin
    select @ptr=textptr(content)
    from ['+@tbname+']
    where id=@id

    if @start is null or @start1<@start
    updatetext ['+@tbname+'].['+@fdname+'] @ptr null null @str
    else
    begin
    set @start1=@start-1
    updatetext ['+@tbname+'].['+@fdname+'] @ptr @start1 @length @str
    end
    fetch tb into @id,@start1
    end
    close tb
    deallocate tb
    '
    exec sp_executesql @s
    ,N'@start int,@length int,@str nvarchar(4000)'
    ,@start,@length,@str
    go

  • 相关阅读:
    CCNA 第二章 以太网回顾
    CCNA 第一章 网络互联
    solidworks中 toolbox调用出现未配置的解决方法
    linux之df命令
    linux之du命令
    linux之pid文件
    linux之mysql启动问题
    linux之使用cron,logrotate管理日志文件
    wordpress(一)wordpress环境的搭建
    phpwind8.7升级9.0.1过程(四)20130207升级到20141228
  • 原文地址:https://www.cnblogs.com/rock_chen/p/155645.html
Copyright © 2020-2023  润新知