分享
 
 
 

SQL Server 2005 ntext字段的REPLACE处理

王朝mssql·作者佚名  2008-06-13
窄屏简体版  字體: |||超大  

SQL Server2005开发应用实例──ntext字段的REPLACE处理示例:

--测试数据

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

DROP TABLE tb

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有