博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模拟字符串处理函数 stuff 的存储过程,对 ntext 字段进行stuff .
阅读量:5036 次
发布时间:2019-06-12

本文共 1538 字,大约阅读时间需要 5 分钟。

转自:

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 end+'

open tb

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

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

转载于:https://www.cnblogs.com/rock_chen/archive/2005/05/15/155645.html

你可能感兴趣的文章
C#inSSIDer强大的wifi无线热点信号扫描器源码
查看>>
「Foundation」集合
查看>>
算法时间复杂度
查看>>
二叉树的遍历 - 数据结构和算法46
查看>>
类模板 - C++快速入门45
查看>>
[转载]JDK的动态代理深入解析(Proxy,InvocationHandler)
查看>>
centos7 搭建vsftp服务器
查看>>
RijndaelManaged 加密
查看>>
Android 音量调节
查看>>
HTML&CSS基础学习笔记1.28-给网页添加一个css样式
查看>>
windows上面链接使用linux上面的docker daemon
查看>>
Redis事务
查看>>
Web框架和Django基础
查看>>
python中的逻辑操作符
查看>>
CSS兼容性常见问题总结
查看>>
HDU 1548 A strange lift (Dijkstra)
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>
C# 启动进程和杀死进程
查看>>
tcp实现交互
查看>>
IIS的各种身份验证详细测试
查看>>