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

存储过程|函数|字符串

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

时间: 2024-08-03 17:44:34

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

模拟字符串处理函数 stuff 处理 Ntext 字段

函数|字符串 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 的主键(或标识字段),数据类型为

c语言中字符串分割函数及实现方法_C 语言

1.问题引入 自己在写一个linux下的模拟执行指令的时候,遇到了输入"cat a.c",要将该字符串分解成cat和a.c两个单独的字符串,虽然知道有strtok的存在,但是想自己尝试写一下,于是就自己写了一个,不过总是遇到这样或那样的问题,虽然最后调通了,不过确浪费了不少时间:后来作业交上去以后又仔细阅读了strtok函数,发现原来linux下已经改成strsep,所有在这里就写一下自己所走的过程. 2.自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a

用C++实现python字符串分割函数 split()与rsplit()实例

本文我们将实现两个python字符串分割函数.这两个函数的函数原型为: split(spe = None,maxsplit= -1)rsplit(spe= None ,maxsplit = -1) 这两个方法使用参数spe作为分隔符,将字符串切割成指定的maxsplit段,并以列表的形式返回切割后的字符串.默认的分隔符是空格,默认情况下对所有的分隔符进行分割: >>> >>> s = "I'm not to see you">>>

ASP字符串截取函数,适用于采集程序调用

'********************************************************************************'    Function(公有)'    名称 :   字符串截取函数'    作用 :    按指定首尾字符串截取内容(本函数为从左向右截取)'    参数 :    sContent ---- 被截取的内容'        sStart ------ 首字符串'        iStartNo ---- 当首字符串不是唯一时取第几

PHP字符串函数教程:PHP字符串分割函数处理

PHP字符串函数在PHP网站开发中广泛使用,比如使用PHP字符串函数对字符串分割.截取.匹配.替换等处理.PHP字符串函数对于PHP入门学习者来说必不可少,本文将主要介绍PHP字符串分割函数处理心得,开启PHP字符串函数入门学习教程之旅. 常用的PHP字符串分割函数 常用的PHP分割字符串函数主要有explode.strtok.str_split,主要用来拆分字符串,并以数组或字符串形式返回,与这三个PHP字符串分隔函数相对应的,以分隔符连接拆分字符串的PHP字符串函数有implode.join

字符串操作函数

函数|字符串 PHP3.0中的字符串操作功能是比较多的,重要的有以下这些: (1)echo,print,printf,sprintf 用于输出字符串.字符串中如果有变量名则被替换成其值. 后两个函数类似于C的同名函数. (2)strchr, strlen, strtok, strrchr, strrev, strstr, strtolower, strtoupper, substr, ucfirst 用的字符串操作函数,有些和C中的同名函数意义完全一致. strrev是把一个字符串翻转. str

java 面试中的一道编写一个截取字符串的函数!!!!

函数|字符串 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个". package string;class SplitString { private String str; private int byteNum; publi

PHP开发中常用的字符串操作函数

1,拼接字符串 拼接字符串是最常用到的字符串操作之一,在PHP中支持三种方式对字符串进行拼接操作,分别是圆点.分隔符{}操作,还有圆点等号.=来进行操作,圆点等号可以把一个比较长的字符串分解为几行进行定义,这样做是比较有好处的. 2,替换字符串 在PHP这门语言中,提供了一个名字叫做substr_replace()的函数,该函数的作用可以快速的完成扫描和编辑文本内容较多的字符串替换功能.他的语法格式: mixed substr_replace(mixed $string,string $repl

php字符串处理函数库

函数|字符串 php字符串处理函数库 AddSlashes 字符串加入斜线. 语法: string addslashes(string str); 返回值: 字符串 函数种类: 资料处理 本函数使需要让数据库处理的字符串,引号的部份加上斜线,以供数据库查询 (query) 能顺利运作.这些会被改的字符包括单引号 (').双引号 (").反斜线 backslash (\) 以及空字符 NUL (the null byte). bin2hex 二进位转成十六进位. 语法: string bin2he