sqlserver替換
1. sqlSERVER如何批次替換在列中不固定出現的第二個字元
先試一下這個(CCC和B表自己換一下)
select left(CCC, patindex('%金%金%',CCC))+ stuff(right(CCC,len(CCC)-patindex('%金%金%',CCC)),charindex('金',right(CCC,len(CCC)-patindex('%金%金%',CCC))),1,'銅') From B表 Where patindex('%金%金%',CCC)>0
如果能正常檢索出結果,那就可以直接寫
update B表 set CCC=(
left(CCC, patindex('%金%金%',CCC))+ stuff(right(CCC,len(CCC)-patindex('%金%
金%',CCC)),charindex('金',right(CCC,len(CCC)-patindex('%金%金%',CCC))),1,'銅
')) Where patindex('%金%金%',CCC)>0
2. 如何替換SQL Server資料庫內容
在告訴大家如何替換數據內容之前,我建議大家先了解一下SQL Server資料庫的數據存儲類型:在使用iwms系統的過程中,我們會經常遇到數據內容的替換操作。在告訴大家如何替換數據內容之前,我建議大家先了解一下SQLServer資料庫的數據存儲類型:SQLServer數據類型:以上是資料庫的基礎知識,是做網站的朋友都應該知道的內容(無論你使用什麼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]),'老字元串','新字元串')二是SQLServer存儲過程declare @ptr varbinary(16) declare @artId int declare @Position int,@len int set @len = datalength('老字元串') declare wux_Cursor scroll Cursorforselect textptr([欄位名]),[key欄位名] from [數據表名] for read only open wux_Cursor fetch next from wux_Cursor into @ptr,@artId while @@fetch_status=0beginselect @Position=patindex('%老字元串%',[欄位名]) from [數據表名] where [key欄位名]=@artId while @Position>0beginset @Position=@Position-1 updatetext [數據表名].[欄位名] @ptr @Position @len '新字元串' select @Position=patindex('%老字元串%',[欄位名]) from [數據表名] where [key欄位名]=@artIdendfetch next from wux_Cursor into @ptr,@artIdendclose wux_cursor deallocate wux_cursor go比如,替換iwms文章數據表(iwms_news)中的標題欄位(content,ntext類型欄位)的部分內容,我們應該這么寫declare @ptr varbinary(16) declare @artId int declare @Position int,@len int set @len = datalength('老字元串')
3. 如何替換sql server里所有表內的欄位內容為其他內容
些個
循環語句
,先把所有的表名select
出來;把表名設置成變數,通過while
語句循環.相當簡單的.
4. sqlserver 中ntext欄位的批量替換(updatetext的用法)
一、問題描述:
1。在Sql
Server
中,ntext/text/image
欄位不允許應用replace函數替換內容;
2。通過convert欄位轉換,可以把ntext欄位轉換為varchar(8000),然後用Relpace函數替換,不過,此方法,對於欄位長度大於8000的ntext欄位無效。
二、問題解決
整理通用存儲過程,代碼如下:
復制代碼
代碼如下:
CREATE
procere
[dbo].[Proc_UpdateNTextField]
@TargetTable
nvarchar(1000),
--目標表名
@TargetField
nvarchar(1000),
--目標欄位名
@PKField
nvarchar(1000),
--該表主鍵欄位名
@otxt
nvarchar(1000),
--需要替換的字元串
@ntxt
nvarchar(1000)
--替換後的字元串
as
begin
declare
@SqlStr
nvarchar(4000)
set
@SqlStr
=
'
declare
@txtlen
int
'
set
@SqlStr
=
@SqlStr
+
'
set
@txtlen
=
len('''
+
@otxt
+
''')
'
set
@SqlStr
=
@SqlStr
+
'
declare
@pos
int
'
set
@SqlStr
=
@SqlStr
+
'
set
@pos
=
0
'
set
@SqlStr
=
@SqlStr
+
'declare
curs
cursor
local
fast_forward
for
select
'
set
@SqlStr
=
@SqlStr
+
@PKField
+
'
,
textptr('
+
@TargetField
+')
from
'
+
@TargetTable
+'
where
'
+
@TargetField
+
'
like
''%'
+
@otxt
+'%'''
set
@SqlStr
=
@SqlStr
+
'
declare
@ptr
binary(16)
'
set
@SqlStr
=
@SqlStr
+
'
declare
@id
char(32)
'
set
@SqlStr
=
@SqlStr
+
'
open
curs
'
set
@SqlStr
=
@SqlStr
+
'
fetch
next
from
curs
into
@id,
@ptr
'
set
@SqlStr
=
@SqlStr
+
'
while
@@fetch_status
=
0
'
set
@SqlStr
=
@SqlStr
+
'
begin
'
set
@SqlStr
=
@SqlStr
+
'
select
@pos=
patindex(''%'
+
@otxt
+
'%'',ProctDesc)
from
ProctTemp
where
ProctID=@id
'
set
@SqlStr
=
@SqlStr
+
'
while
@pos>0
'
set
@SqlStr
=
@SqlStr
+
'
begin
'
set
@SqlStr
=
@SqlStr
+
'
set
@pos=@pos-1
'
set
@SqlStr
=
@SqlStr
+
'
updatetext
'
+
@TargetTable
+
'.'
+@TargetField
+
'
@ptr
@pos
@txtlen
'''
+
@ntxt
+
'''
'
set
@SqlStr
=
@SqlStr
+
'
select
@pos=
patindex(''%'
+
@otxt
+
'%'',ProctDesc)
from
ProctTemp
where
ProctID=@id
'
set
@SqlStr
=
@SqlStr
+
'
end
'
set
@SqlStr
=
@SqlStr
+
'
fetch
next
from
curs
into
@id,
@ptr
'
set
@SqlStr
=
@SqlStr
+
'
end
'
set
@SqlStr
=
@SqlStr
+
'
close
curs
'
set
@SqlStr
=
@SqlStr
+
'
deallocate
curs
'
EXECUTE
sp_executesql
@SqlStr
end
5. 求助!SQLServer資料庫 內容關鍵字替換 語句
sql函數中就有replace函數可以使用
也可以使用字元串函數 處理charindex,substring等
6. sqlserver查找所有表中是否包含字元並替換
將text替換成你要查找的內容
select name
from sysobjects o, syscomments s
where o.id = s.id
and text like '%text%'
and o.xtype = 'P'