你要看看你的A字段是什么類(lèi)型。
巴里坤哈薩克網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司成立與2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
如果是nvarchar
varchar等可以檢索的類(lèi)型的話
用:
update
表
set
A=Replace(A,'aaa','bbb')
如果是ntext
text
類(lèi)型的話,就麻煩點(diǎn),看看一般文章內(nèi)容的長(zhǎng)度有多少?如果少于8000字符
update
表
set
A=Replace(convert(varchar(8000),A),'aaa','bbb')
如果字?jǐn)?shù)比較多的話,就只能用程序從數(shù)據(jù)庫(kù)讀,然后用正則替換,再進(jìn)行修改。
我目前就知道這些,看看有高人還有更好的方法沒(méi)
在告訴大家如何替換數(shù)據(jù)內(nèi)容之前,我建議大家先了解一下SQL Server數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)類(lèi)型:在使用iwms系統(tǒng)的過(guò)程中,我們會(huì)經(jīng)常遇到數(shù)據(jù)內(nèi)容的替換操作。在告訴大家如何替換數(shù)據(jù)內(nèi)容之前,我建議大家先了解一下SQLServer數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)類(lèi)型:SQLServer數(shù)據(jù)類(lèi)型:以上是數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí),是做網(wǎng)站的朋友都應(yīng)該知道的內(nèi)容(無(wú)論你使用什么cms),所以建議大家都耐心看一下。數(shù)據(jù)替換一般都發(fā)生在字符串?dāng)?shù)據(jù)字段中,除了ntext類(lèi)型字段以外的其他字符串?dāng)?shù)據(jù)字段都可以使用以下的sql語(yǔ)句進(jìn)行替換:update [swf_Upload] set [Dir] = replace([Dir],'200901/14','200901/15')update [swf_Content] set [Description] =replace([Description],'200901/14','200901/15')update [swf_Content_01] set [content] = replace(convert(varchar(4000), [content]),'200901/14','200901/15') UPDATE [數(shù)據(jù)表名] SET [字段名] = REPLACE([字段名],'老字符串','新字符串') 比如,替換iwms文章數(shù)據(jù)表(iwms_news)中的標(biāo)題字段(title)的部分內(nèi)容,我們應(yīng)該這么寫(xiě):UPDATE [iwms_news] SET [title] = REPLACE([title],'老字符串','新字符串') 上面的sql語(yǔ)句在iwms后臺(tái)的sql執(zhí)行里面可以直接執(zhí)行,基本上可以搞定所有的替換操作,但是由于ntext數(shù)據(jù)長(zhǎng)度的原因,這一方法對(duì)ntext類(lèi)型字段無(wú)效。那我們?cè)撚檬裁捶椒ㄌ鎿Qntext類(lèi)型字段的內(nèi)容呢?方法有兩種:一是類(lèi)型轉(zhuǎn)換,將ntext類(lèi)型轉(zhuǎn)換為varchar類(lèi)型,然后再用replace。適合于單頁(yè)內(nèi)容最大長(zhǎng)度4000的文章。update [數(shù)據(jù)表名] set [字段名] = replace(convert(varchar(4000), [字段名]),'老字符串','新字符串') 比如,替換iwms文章數(shù)據(jù)表(iwms_news)中的標(biāo)題字段(content,ntext類(lèi)型字段)的部分內(nèi)容,我們應(yīng)該這么寫(xiě):update iwms_news set [content] = replace(convert(varchar(4000),[content]),'老字符串','新字符串')二是SQLServer存儲(chǔ)過(guò)程declare @ptr varbinary(16) declare @artId int declare @Position int,@len int set @len = datalength('老字符串') declare wux_Cursor scroll Cursorforselect textptr([字段名]),[key字段名] from [數(shù)據(jù)表名] for read only open wux_Cursor fetch next from wux_Cursor into @ptr,@artId while @@fetch_status=0beginselect @Position=patindex('%老字符串%',[字段名]) from [數(shù)據(jù)表名] where [key字段名]=@artId while @Position0beginset @Position=@Position-1 updatetext [數(shù)據(jù)表名].[字段名] @ptr @Position @len '新字符串' select @Position=patindex('%老字符串%',[字段名]) from [數(shù)據(jù)表名] where [key字段名]=@artIdendfetch next from wux_Cursor into @ptr,@artIdendclose wux_cursor deallocate wux_cursor go比如,替換iwms文章數(shù)據(jù)表(iwms_news)中的標(biāo)題字段(content,ntext類(lèi)型字段)的部分內(nèi)容,我們應(yīng)該這么寫(xiě)declare @ptr varbinary(16) declare @artId int declare @Position int,@len int set @len = datalength('老字符串')
用replace啊。核心思想是將',1,'替換成',11,12,13,14,15,16,'??紤]到1可能出現(xiàn)在開(kāi)頭或末尾,將原字符串的開(kāi)頭和末尾都加上逗號(hào)。這樣就可以統(tǒng)一替換了。替換完畢,再去掉開(kāi)頭和結(jié)尾的逗號(hào)。
create table v (VHCL_RANGE_CODE varchar(100));
insert into v
select '8,1,3,21,22,9,23,61,51,41' union all
select '8,22,9,23,61,51,41,1,3,21' union all
select '1,21,22,23,3,41,42,43,51,52,61,8,9' union all
select '3,4,5,6,1' --加上這條測(cè)試一下1在末尾的情況
--前后各加一個(gè)逗號(hào)后,進(jìn)行替換
update v set VHCL_RANGE_CODE=replace(','+VHCL_RANGE_CODE+',',',1,',',11,12,13,14,15,16,');
--去除前后的逗號(hào)
update v set VHCL_RANGE_CODE=substring(VHCL_RANGE_CODE,2,len(VHCL_RANGE_CODE)-2)替換后的結(jié)果:
update 表名 set 字段名 = replace(字段名,‘2019-05’,‘2019-07’) where 條件(ID=765 或者條件范圍)