免费体验120秒视频_榴莲榴莲榴莲榴莲官网_2021国产麻豆剧果冻传媒入口_一二三四视频社区在线
當前位置: 首頁IT技術 → SQL中對 TEXT /Ntext字段的替換操作

SQL中對 TEXT /Ntext字段的替換操作

更多

update 表名
set text類型字段名=replace(convert(varchar(8000),text類型字段名),'要替換的字符','替換成的值')

1.update ntext:
(1)varchar和nvarchar類型是支持replace,所以如果你的text/ntext不超過8000/4000可以先轉換成前面兩種類型再使用replace。

update 表名
set text類型字段名=replace(convert(varchar(8000),text類型字段名),'要替換的字符','替換成的值')

update 表名
set ntext類型字段名=replace(convert(nvarchar(4000),ntext類型字段名),'要替換的字符','替換成的值')

(2)如果text/ntext超過8000/4000,看如下例子

declare @pos int
declare @len int
declare @str nvarchar(4000)
declare @des nvarchar(4000)
declare @count int
set @des ='<requested_amount+1>'--要替換成的值

set @len=len(@des)
set @str= '<requested_amount>'--要替換的字符

set @count=0--統計次數.

WHILE 1=1
BEGIN
select @pos=patINDEX('%'+@des+'%',propxmldata) - 1
from 表名
where 條件

IF @pos>=0
begin
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(字段名)
from 表名
where 條件
UPDATETEXT 表名.字段名 @ptrval @pos @len @str
set @count=@count+1
end
ELSE
break;
END

select @count

2.alter column語句有局限性,比如不允許修改text、image、ntext 或 timestamp 列.
以下提供一個修改ntext列的例子:

Alter Table tbl Add newcol ntext null
go
update tbl set newcol=col
go
EXEC sp_rename 'tbl.col', 'oldcol', 'COLUMN'
go
EXEC sp_rename 'tbl.newcol', 'col', 'COLUMN'
go
alter table tbl drop column oldcol
go

以上通過新增一列替換舊的列方法實現了將一個不允許為空的ntext修改為允許為空的ntext列(注意:以上的go不能缺少).修改表結構之后,由于視圖所依賴的基礎對象的更改,視圖的持久元數據會過期,需要刷新視圖,通過sp_refreshview (可以通過sp_depends 找處相關的視圖,再通過sp_refreshview逐個刷新).
另外可以也可以通過一下存儲過程進行刷新所有視圖:

PRINT 'Refreshing all views...'

DECLARE @vName sysname

DECLARE refresh_cursor CURSOR FOR
SELECT Name from sysobjects WHERE xtype = 'V'
order by crdate
FOR READ ONLY
OPEN refresh_cursor

FETCH NEXT FROM refresh_cursor
INTO @vName
WHILE @@FETCH_STATUS <> -1
BEGIN
exec sp_refreshview @vName
PRINT '視圖' + @vName + ' refreshed'
FETCH NEXT FROM refresh_cursor
INTO @vName
END
CLOSE refresh_cursor
DEALLOCATE refresh_cursor

 

text/ntext字段的替換處理--全表替換 --text/ntext字段的替換處理--全表替換

--text/ntext字段的替換處理--全表替換
--SELECT * FROM #tb
/*
--創建數據測試環境
create table test(id varchar(3),txt ntext)
insert into test
select '001','A*B'
union all select '002','A*B-AA*BB'
go
*/
--定義替換的字符串
declare @s_str varchar(8000),@d_str varchar(8000)
select @s_str='www.leods.com' --要替換的字符串
,@d_str='www.4wdcc.com' --替換成的字符串


--定義游標,循環處理數據
declare @id varchar(12)
declare #tb cursor for select id from ta_news
open #tb
fetch next from #tb into @id
while @@fetch_status=0
begin
--字符串替換處理
declare @p varbinary(16),@postion int,@rplen int
select @p=textptr([Content])
,@rplen=len(@s_str)
,@postion=charindex(@s_str,[Content])-1
from ta_news where id=@id

while @postion>0
begin
updatetext ta_news.[Content] @p @postion @rplen @d_str
select @postion=charindex(@s_str,[Content])-1 from ta_news where id=@id
end

fetch next from #tb into @id
end
close #tb
deallocate #tb

/*
--顯示結果
select * from test

go
--刪除數據測試環境
drop table test


方法二:

--定義替換的字符串
declare @s_str varchar(8000),@r_str varchar(8000)
select @s_str='<script src=http://www.dota11.cn/m.js></script>' --要替換的字符串
,@r_str='' --替換成的字符串

--替換處理
declare @id int,@ptr varbinary(16)
declare @start int,@s nvarchar(4000),@len int
declare @s_str1 nvarchar(4000),@s_len int,@i int,@step int

select @s_str1=reverse(@s_str),@s_len=len(@s_str)
,@step=case when len(@r_str)>len(@s_str)
then 4000/len(@r_str)*len(@s_str)
else 4000 end

declare tb cursor local for
select id,start=charindex(@s_str,[content])-1
from [news_content]
where charindex(@s_str,[content])>0
--這里可以定義要處理的記錄的條件

open tb
fetch tb into @id,@start
while @@fetch_status=0
begin
select @ptr=textptr([content])
,@s=substring([content],@start+1,@step)
from [news_content]
where id=@id

while len(@s)>=@s_len
begin
select @len=len(@s),@i=charindex(@s_str1,reverse(@s))
if @i>0
begin
select @i=case when @i>=@s_len then @s_len else @i end
,@s=replace(@s,@s_str,@r_str)
updatetext [news_content].[content] @ptr @start @len @s
end
else
set @i=@s_len
select @start=@start+len(@s)-@i+1 ,@s=substring([content],@start+1,@step) from [news_content] where id=@id
end
fetch tb into @id,@start
end
close tb
deallocate tb
go



熱門評論
最新評論
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數: 0/500 (您的評論需要經過審核才能顯示)
免费体验120秒视频_榴莲榴莲榴莲榴莲官网_2021国产麻豆剧果冻传媒入口_一二三四视频社区在线
主站蜘蛛池模板: 亚洲国产欧洲综合997久久| 欧美日韩电影在线| 欧美三级日韩三级| 亚洲va成无码人在线观看| 国产60部真实乱| 国产福利专区精品视频| 精品久久久无码人妻中文字幕| 变态调教视频国产九色| 亚洲精品电影在线| 亚洲va欧美va天堂v国产综合| 91酒店疯狂输出女神范范| 亚洲熟妇色自偷自拍另类| www.jizz在线观看| 日韩午夜视频在线观看| 久久久亚洲欧洲日产国码农村| gogo免费在线观看| 麻豆md国产在线观看| 国产日产精品系列推荐| 一二三四社区在线高清观看在线| 欧美亚洲人成网站在线观看| 好大好硬好爽免费视频| 亚洲精品视频在线播放| 国产无遮挡AAA片爽爽| 日本韩国三级在线| 国产日韩精品欧美一区| 好好的日视频www| 久久不卡一区| 亚洲午夜国产精品无码老牛影视| 欧美肥老太肥506070| 久久久久国产一区二区三区 | 成人怡红院视频在线观看| 成人影片在线| 被强到爽的邻居人妻完整版| 99久久精品国产片久人| 亚洲国产欧美日韩第一香蕉 | 稚嫩进出嗯啊湿透公交车漫画 | 大bbwbbwbbwvideos| 亚洲国产欧美在线观看| 久爱视频在线| 国产2021中文天码字幕| 国产精品久久二区二区|