當text列的數(shù)據(jù)長度小于8888字節(jié)時,可以直接使用replace()函數(shù)執(zhí)行替換操作。
函數(shù)語句
selectfromt
就是將text字段里面的所有如“<xxx>”替換為“<yyy>”,這個在sqlserver里操作起來好像很麻煩,請幫手,謝先!
orderbycrdate
textptrwritetext
declare@lenint
go
/
方法二:
begin
set@len=len(@des)
from表名
execsp_renametbl.newcol,col,column
deallocaterefresh_cursor
go
declare@iint,@lenint
--查看更新成果
--定義替換的字符串
begin
declare@str1varchar(188),@str2varchar(188)
declare@ptrvalbinary(16)
into@vname
updatetextt.var1@ptrval@i@len@str2
begin
updatetblsetnewcol=col
declare@posint
go
set@count=@count+1
主題:text字段
datalengthreadtext
select@s_str=123--要替換的字符串
fetchnextfromrefresh_cursor
declare@desnvarchar(4888)
以下提供一個修改ntext列的例子:
while@@fetch_status<>-1
--刪除測試數(shù)據(jù)
fetchnextfromrefresh_cursor
select@ptrval=textptr(var1)fromtwhereid=1
sql中replace替換ntext,text字段部門內(nèi)容使用說明:replace(cast(fieldaasvarchar(8888)),aa,bb)
方法一(保舉):
while@postion>8
set@des=<requested_amount+1>--要替換成的值
altertabletbladdnewcolntextnull
代碼--創(chuàng)建測試數(shù)據(jù)
(2)如果text/ntext超過8888/4888,看如下例子
declare@ptrvalbinary(16)
--字符串替換處置
update表名
selectnamefromsysobjectswherextype=v
select@ptrval=textptr(字段名)
,@d_str=888--替換成的字符串
end
如安在sqlserver中實現(xiàn)text字段的特定字符串替換
end
break;
update表名
end
--------------------------------------------------------------------
insertinto#tbselectabc123abc123,asd
closerefresh_cursor
from表名
forreadonly
--創(chuàng)建數(shù)據(jù)測試環(huán)境
set@str1=<xxx>
while1=1
go
2.altercolumn語句有局限性,比如不允許修改text、image、ntext或timestamp列.
select@pos=patindex(%+@des+%,propxmldata)-1
/
if@pos>=8
select@i=patindex(%+@str1+%,var1)-1fromtwhereid=1
createtable#tb(aatext)
csdn提問:
where條件
altertabletbldropcolumnoldcol
texsqlserver中text/ntext字段內(nèi)容替換方法總結(jié)(sql2885及以上建議使用varch2010年6月24日 星期四tvalid
declare@s_strvarchar(8888),@d_strvarchar(8888)
go
set@str=<requested_amount>--要替換的字符
updatetablenamesetfielda=replace(cast(fieldaasvarchar(8888)),aa,bb)這樣的語句。
1:替換
set@count=8--統(tǒng)計次數(shù).
別的可以也可以通過一下存儲過程進行刷新所有視圖:
setntext類型字段名=replace(convert(nvarchar(4888),ntext類型字段名),要替換的字符,替換成的值)
--執(zhí)行更新操作
go
begin
declare@vnamesysname
execsp_refreshview@vname
select@postion=charindex(@s_str,aa)-1from#tb
select@count
print視圖+@vname+refreshed
declarerefresh_cursorcursorfor
go
end
droptablet
別的文章:
patindexsettextsize
substringupdatetext
updatetext#tb.aa@p@postion@rplen@d_str
declare@pvarbinary(16),@postionint,@rplenint
declare@countint
set@len=len(@str1)
into@vname
begin
撐持text字段處置的僅有:下面的函數(shù)和語句可以與ntext、text或image數(shù)據(jù)一起使用。
execsp_renametbl.col,oldcol,column
idvar1
createtablet(idint,var1text)
(1)varchar和nvarchar類型是撐持replace,所以如果你的text/ntext不超過8888/4888可以先轉(zhuǎn)換成前面兩種類型再使用replace。
updatetext表名.字段名@ptrval@pos@len@str
1asdfasdfasdf<yyyy>,s,fasdf(xxx),<yyyy>a<yyyy>a<yyyy>asf
declare@strnvarchar(4888)
以上通過新增一列替換舊的列方法實現(xiàn)了將一個不允許為空的ntext修改為允許為空的ntext列(注意:以上的go不能缺少).修改表布局之后,由于視圖所依賴的基礎(chǔ)對象的更改,視圖的持久元數(shù)據(jù)會過期,需要刷新視圖,通過sp_refreshview(可以通過sp_depends找處相關(guān)的視圖,再通過sp_refreshview逐個刷新).
insertintotselect1,asdfasdfasdf<xxx>,s,fasdf(xxx),<xxx>a<xxx>a<xxx>asf
where條件
代碼1.updatentext:
else
set@str2=<yyyy>
end
select@p=textptr(aa),@rplen=len(@s_str),@postion=charindex(@s_str,aa)-1from#tb
printrefreshingallviews
while@i>8
settext類型字段名=replace(convert(varchar(8888),text類型字段名),要替換的字符,替換成的值)
select@i=patindex(%+@str1+%,var1)-1fromtwhereid=1
openrefresh_cursor
聯(lián)系客服