`
dengbaoleng
  • 浏览: 1135693 次
文章分类
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    SQL Server 中 text或ntext 字段内容替换方法

    在不确定text或ntext字段长度的时候 SQL Server 中 text或ntext 字段内容替换方法

    SQL的split函数(自定义)new

    SQL的split函数(自定义) 支持Ntext的大字符串传入 SQL的split函数(自定义) 支持Ntext的大字符串传入 SQL的split函数(自定义) 支持Ntext的大字符串传入 SQL的split函数(自定义) 支持Ntext的大字符串传入 SQL的split...

    sqlserver 中ntext字段的批量替换(updatetext的用法)

    通过convert字段转换,可以把ntext字段转换为varchar(8000),然后用Relpace函数替换,不过,此方法,对于字段长度大于8000的ntext字段无效。 二、问题解决 整理通用存储过程,代码如下: 代码如下: CREATE ...

    sql ntext数据类型字符替换实现代码

    代码如下: —ntext数据类型字符替换 create table tt ( sid INT IDENTITY(1,1), cont ntext ) go insert into tt(cont) values(N’fd sad fdsa 涂聚文工团 缔友计算机信息技术有限公司 可能性 桔柑 ‘) go update tt...

    经典SQL脚本大全

    │ │ 3.2 各种字符串分拆处理函数.sql │ │ 3.3 各种字符串合并处理示例.sql │ │ 3.4.1 分段截取函数.sql │ │ 3.4.2 分段更新函数.sql │ │ 3.4.3 IP地址处理函数.sql │ │ 3.5.1 字符串比较函数.sql │ │ ...

    php读取mssql的ntext字段返回值为空的解决方法

    如果是表里面没有ntext字段,可以用以下代码: 复制代码 代码如下:&lt;?php  // Connect to MSSQL  $link = mssql_connect(‘KALLESPCSQLEXPRESS’, ‘sa’, ‘dsc’);   if(!$link || !mssql_select_db(

    sqlserver2000基础(高手也有用)

    3.5 字符串分拆与合并处理应用实例 74 3.5.1 字符串比较 74 3.5.2 字符串交集/并集 75 3.5.3 分拆字符串并统计 78 3.5.4 借用字符串实现无规律排序 82 3.5.5 列车车次查询 82 3.6 字符串在动态Transact...

    SQL中函数 replace 的参数1的数据类型ntext无效的解决方法

    今天将一个ACC的数据库转换成ms-sql以后发现在使用replace替换语句的时候出现: SQL中函数 replace 的参数 1 的数据类型 ntext 无效。找了半天找到了解决办法: 因为ntext需要转化下 用如下语句即可解决: 代码如下:...

    Sqlserver2000经典脚本

    │ 3.7.4 text与image字段转换处理示例.sql │ │ 3.7.5 ntext字段的REPLACE处理示例.sql │ │ │ └─其他 │ varbinary转换成字符串.sql │ 关键字搜索.sql │ 分解公式.sql │ ...

    SQL SERVER使用REPLACE将某一列字段中的某个值替换为其他的值

    SQL SERVER将某一列字段中的某个值替换为其他的值 update 表名 set 列名 = REPLACE( 列名 ,... 您可能感兴趣的文章:sqlserver replace函数 批量替换数据库中指定字段内指定字符串参考方法Sql Server中REPLACE函数的使用

    pymssql ntext字段调用问题解决方法

    不过,在我使用过程中,发现,如果表中包含了ntext字段,就会出错,提示 不能用 DB-Library(如 ISQL)或 ODBC 3.7 或更早版本将 ntext 数据或仅使用Unicode排序规则的 Unicode 数据发送到客户端。 查了一下,发现...

    SQL SERVER 2000开发与管理应用实例

    3.5 字符串分拆与合并处理应用实例 74 3.5.1 字符串比较 74 3.5.2 字符串交集/并集 75 3.5.3 分拆字符串并统计 78 3.5.4 借用字符串实现无规律排序 82 3.5.5 列车车次查询 82 3.6 字符串在动态...

    MSSQL批量替换语句 在SQL SERVER中批量替换字符串的方法

    text ntext 数据类型字段的语句 代码如下:update 表名 set 字段名=replace(cast(与前面一样的字段名 as varchar(8000)) ,’原本内容’,’想要替换成什么’) 方法二:(替换其他数据类型字段的语句,实际应用中不常见) ...

    sql server替换textntext类型字段的值

    sql server替换textntext类型字段的值, 处理这种比较特殊的情况

    <script src清理器

    将及其后面的字符串去掉,但是注意,修改不了ntext类型的字段,只是初级板本,没做任何美化或者优化,请下载的朋友原谅。在使用的时候请先自己备份下数据库再做清理,最好在自己电脑上测试成功后再还原到服务器上...

    findreplace:此函数查找并替换文本文件中的字符串-matlab开发

    查找替换(文件,otext,ntext) 查找替换(文件,otext,ntext,匹配) file:文本文件名(带或不带路径) otext:要替换的文本(旧文本) ntext:替换文本(新文本) 匹配: (1) 匹配大小写或 (0) 忽略大小写。 ...

    动态SQL语句基本语法。动态SQL语句基本语法

    declare @paramstring nvarchar(200) --设置动态语句中的参数的字符串(注:必须为ntext或nchar哐nvarchar类型,不能是varchar类型) declare @input_id int--定义需传入动态语句的参数的值 set @QueryString='...

    SQL中NTEXT字段内容显示&amp;lt;long text&amp;gt;的原因

    SQL中NTEXT字段内容显示&lt;long text&gt;的原因

    MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法

    对text或ntext类型的数据在查询中不能进行字符串操作。这时用得最多的是把text当作varchar(实际内容长度低于8000字节时)或把ntext当作nvarchar(实际内容长度低于4000字节时)来处理。但是这样处理也不是非常妥当...

Global site tag (gtag.js) - Google Analytics