替换NText字段数据
来源:互联网 发布:淘宝cpu鞋旗舰店 编辑:程序博客网 时间:2024/04/30 07:13
--测试数据
CREATE TABLE tb(col ntext)
INSERT tb VALUES(REPLICATE( '0001,0002,0003,0004,0005,0006,0007,0008,0009,0100,'
+'220000001,302000004,500200006,700002008,900002120,',800))
DECLARE @p binary(16)
SELECT @p=TEXTPTR(col) FROM tb
UPDATETEXT tb.col @p NULL 0 tb.col @p
GO
--替换处理定义
DECLARE @s_str nvarchar(1000),@r_str nvarchar(1000)
SELECT @s_str='00' --要替换的字符串
,@r_str='0000' --替换成该字符串
DECLARE @p varbinary(16)
DECLARE @start int,@s nvarchar(4000),@len int
DECLARE @s_len int,@step int,@last_repl int,@pos int
--替换处理参数设置
SELECT
--用于要判断每次截取数据,最后一个被替换数据位置的处理
@s_len=LEN(@s_str),
--设置每次应该截取的数据的长度,防止REPLACE后数据溢出
@step=CASE WHEN LEN(@r_str)>LEN(@s_str)
THEN 4000/LEN(@r_str)*LEN(@s_str)
ELSE 4000 END
--替换处理的开始位置
SELECT @start=PATINDEX('%'+@s_str+'%',col),
@p=TEXTPTR(col),
@s=SUBSTRING(col,@start,@step),
@len=LEN(@s),
@last_repl=0
FROM tb
WHERE PATINDEX('%'+@s_str+'%',col)>0
AND TEXTVALID('tb.col',TEXTPTR(col))=1
WHILE @len>=@s_len
BEGIN
--得到最后一个被替换数据的位置
WHILE CHARINDEX(@s_str,@s,@last_repl)>0
SET @last_repl=@s_len
+CHARINDEX(@s_str,@s,@last_repl)
--如果需要,更新数据,同时判断下一个取数位置的偏移量
IF @last_repl=0
SET @last_repl=@s_len
ELSE
BEGIN
SELECT @last_repl=CASE
WHEN @len<@last_repl THEN 1
WHEN @len-@last_repl>=@s_len THEN @s_len
ELSE @len-@last_repl+2 END,
@s=REPLACE(@s,@s_str,@r_str),
@pos=@start-1
UPDATETEXT TB.col @p @pos @len @s
END
--获取下一个要处理的数据
SELECT @start=@start+LEN(@s)-@last_repl+1,
@s=SUBSTRING(col,@start,@step),
@len=LEN(@s),
@last_repl=0
FROM tb
END
GO
--显示处理结果
SELECT datalength(col),* FROM tb
- 替换NText字段数据
- 批量替换ntext字段
- ntext数据类型字段中的内容替换
- ntext字段的替换处理示例--全表替换
- 数据库ntext,text字段的内容批量替换储存过程.
- SQL中用replace替换ntext,text字段部分内容方法
- Sql Server 中 text或ntext 字段内容替换
- Sqlserver 如何修改替换text,ntext类型字段
- 应用replace函数替换ntext/text/image 字段内容
- Ntext字段拆分处理
- Ntext字段拆分处理
- Ntext字段拆分处理
- Ntext字段拆分处理
- Ntext字段拆分处理
- Ntext字段拆分处理
- Ntext字段拆分处理
- Ntext字段拆分处理
- Ntext字段拆分处理
- Ajax缘何流行—来看看大象本身
- goto可以返回
- 一个虚函数的简单例子
- 为ActiveX控件创建Cab文件
- 一生必看的80本书
- 替换NText字段数据
- huangfeng
- shou
- hibernate框架和dbcp或其他连接池的使用
- 回顾工程师生涯的点滴良言
- 写了一段SQL,用来产生SQL Server数据库中Table占用空间的报表,单位为KB!
- HTTP 500 内部服务器错误 之 解决方法(删除SAM)
- 一步一步学Remoting之一:从简单开始
- 盛大数位红 正式进军手机游戏