SQL Server資料庫內容替換方法
在使用iwms系統的過程中,我們會經常遇到資料內容的替換操作。在告訴大家如何替換資料內容之前,我建議大家先了解一下SQL Server資料庫的資料儲存型別:
SQL Server資料型別:
以上是資料庫的基礎知識,是做網站的朋友都應該知道的內容(無論你使用什麼cms),所以建議大家都耐心看一下。
資料替換一般都發生在字串資料欄位中,除了ntext型別欄位以外的其他字串資料欄位都可以使用以下的sql語句進行替換:
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 [資料表名] SET [欄位名] = REPLACE([欄位名],'老字串','新字串')
比如,替換iwms文章資料表(iwms_news)中的標題欄位(title)的部分內容,我們應該這麼寫:
UPDATE [iwms_news] SET [title] = REPLACE([title],'老字串','新字串')
上面的sql語句在iwms後臺的sql執行裡面可以直接執行,基本上可以搞定所有的替換操作,但是由於ntext資料長度的原因,這一方法對ntext型別欄位無效。那我們該用什麼方法替換ntext型別欄位的內容呢?方法有兩種:
一是型別轉換,將ntext型別轉換為varchar型別,然後再用replace。適合於單頁內容最大長度<4000的文章。
update [資料表名] set [欄位名] = replace(convert(varchar(4000), [欄位名]),'老字串','新字串')
比如,替換iwms文章資料表(iwms_news)中的標題欄位(content,ntext型別欄位)的部分內容,我們應該這麼寫:
update iwms_news set [content] = replace(convert(varchar(4000),[content]),'老字串','新字串')
二是SQL Server儲存過程
declare @artId int
declare @Position int,@len int
set @len = datalength('老字串')
declare wux_Cursor scroll Cursor
for
select textptr([欄位名]),[key欄位名] from [資料表名]
for read only
open wux_Cursor
fetch next from wux_Cursor into @ptr,@artId
while @@fetch_status=0
begin
select @Position=patindex('%老字串%',[欄位名]) from [資料表名] where [key欄位名]=@artId
while @Position>0
begin
set @Position=@Position-1
updatetext [資料表名].[欄位名] @ptr @Position @len '新字串'
select @Position=patindex('%老字串%',[欄位名]) from [資料表名] where [key欄位名]=@artId
end
fetch next from wux_Cursor into @ptr,@artId
end
close wux_cursor
deallocate wux_cursor
go
比如,替換iwms文章資料表(iwms_news)中的標題欄位(content,ntext型別欄位)的部分內容,我們應該這麼寫
declare @artId int
declare @Position int,@len int
set @len = datalength('老字串')
declare wux_Cursor scroll Cursor
for
select textptr([content]),[articleid] from iwms_news
for read only
open wux_Cursor
fetch next from wux_Cursor into @ptr,@artId
while @@fetch_status=0
begin
select @Position=patindex('%老字串%',[content]) from iwms_news where [articleid]=@artId
while @Position>0
begin
set @Position=@Position-1
updatetext iwms_news.[content] @ptr @Position @len '新字串'
select @Position=patindex('%老字串%',[content]) from iwms_news where [articleid]=@artId
end
fetch next from wux_Cursor into @ptr,@artId
end
close wux_cursor
deallocate wux_cursor
go
ok了,需要注意的是:儲存過程只能在SQL Server查詢分析器中執行。
另外,由於iwms資料庫結構的問題,有分頁的文章內容需要先後對iwms_news和iwms_pages兩個表內容進行替換操作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-582428/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用SQL語言 替換資料庫某欄位內的部分內容SQL資料庫
- Sql Server 替換某一列中指定的文字內容SQLServer
- SQL Server 替換SQLServer
- 資料庫config.php檔案內容解釋及替換方法資料庫PHP
- 檢視SQL Server資料庫修改了哪些內容SQLServer資料庫
- sql 正則替換資料庫語句!SQL資料庫
- Sql Server資料庫如何去掉內容裡面的Html標籤SQLServer資料庫HTML
- vim內替換檔案內容
- replace()方法替換字串內容程式碼例項字串
- 批次word文件內容查詢替換的方法
- linux替換文字內容Linux
- JavaScript 替換字串全部指定內容JavaScript字串
- vim 清空內容和替換文字
- SQL Server中TEXT/NTEXT欄位內容替換方法總結(SQL 2005及以上建議使用VARCHAR(MAX)/NVARCHAR(MAX)代替)...SQLServer
- MS SQL Server 資料庫備份方法SQLServer資料庫
- SQL Server置疑資料庫解決方法SQLServer資料庫
- Linux給檔案內容每行指定字元資料脫敏替換Linux字元
- sql server 資料庫中null 轉換為 0SQLServer資料庫Null
- 附加和分離SQL Server資料庫方法SQLServer資料庫
- 細說SQL Server資料庫備份方法SQLServer資料庫
- 優化SQL Server資料庫查詢方法優化SQLServer資料庫
- SQL Server資料庫基礎之行資料轉換為列資料SQLServer資料庫
- mysql 如何替換資料表欄位字串中指定單詞的內容MySql字串
- linux批量替換指定資料夾中所有檔案的指定內容Linux
- grep、sed批量替換檔案內容shell
- javascript如何替換字串中的指定內容JavaScript字串
- js替換字串中的所有指定內容JS字串
- 替換文字檔案中指定的內容
- 公司網站怎樣替換內容呢網站
- 在sql語句中替換Not In 的方法SQL
- SQL Server資料庫安全SQLServer資料庫
- SQL Server 資料庫映象SQLServer資料庫
- SQL Server 資料庫索引SQLServer資料庫索引
- 資料庫映象 (SQL Server)資料庫SQLServer
- SQL Server資料庫的簡單實現方法SQLServer資料庫
- ASP建立SQL Server資料庫的兩種方法SQLServer資料庫
- linux下批次替換檔案內容(摘)Linux
- 請問公司網站怎樣替換內容網站