国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

.SQL 用REPLACE替換某個字段中的字符,字符替換大全

admin
2010年12月14日 23:40 本文熱度 3640
UPDATE shop_product 
SET shopname = REPLACE(shopname, '水貨', '歐版') 
WHERE (shopid = 3) 

SQL查詢中用replace替換ntext,text字段部分內(nèi)容 

方法一(內(nèi)容不是很大,小于8000的可以采用): 
update tablename set fieldA=replace(cast(fieldA as varchar(8000)) ,'aa','bb')這樣的語句。 
SQL中replace替換ntext,text字段部分內(nèi)容使用說明:replace(cast(fieldA as varchar(8000)) ,'aa','bb') 

------------使用游標替換批量替換數(shù)據(jù)庫中所有表的所有字段的特殊字符(測試通過)--------------- 

--SELECT name From sysobjects WHERE xtype = 'u' 
--得到所有用戶表 
--SELECT b.name, * FROM sysobjects a,syscolumns b where a.id = b.id and a.name = 'ty_bm' 
--查找表中所有字段 
--SELECT b.name,c.name,c.* FROM sysobjects a,syscolumns b,systypes c WHERE a.id = b.id AND b.xtype = c.xusertype AND a.name = 'ty_bm' 
--查找表中所有字段,和字段類型 
declare @t varchar(255),@c varchar(255) 
declare table_cursor cursor for 
select a.name,b.name from sysobjects a,syscolumns b ,systypes c 
where a.id=b.id AND b.xtype = c.xusertype and a.xtype='u' and c.name in (--這里是要替換的類型 
'char', 'nchar', 'nvarchar', 'varchar', 'text', 'ntext' 
--,'text','ntext' --這里如果你的text(ntext)類型沒有超過8000(4000)長度,才可以使用 

and a.name not in (--這里不想替換的表,比如管理員表 admin 或者用戶表 userinfo ,如果全部表,這里為'',或者不要這個條件 
'admin','userinfo' 

declare @str varchar(500),@str2 varchar(500) 
--這里是你要替換的原字符 
set @str='163' 
--這里是你要替換的新字符 
set @str2='136' 
open table_cursor fetch next from table_cursor into @t,@c 
while(@@fetch_status=0) 
begin 
    --print('update [' + @t + '] set [' + @c + ']=replace(cast([' + @c + '] as varchar(8000)),'''+@str+''','''+ @str2 +''')') --查看輸入效果 
    exec('update [' + @t + '] set [' + @c + ']=replace(cast([' + @c + '] as varchar(8000)),'''+@str+''','''+ @str2 +''')') --執(zhí)行 
    fetch next from table_cursor into @t,@c 
end 
close table_cursor 
deallocate table_cursor; 


|||||||||||||判斷了是否是text,ntext,并且制定更新一個表|||||||||||| 
declare @t varchar(255),@c varchar(255),@d varchar(255) 
declare table_cursor cursor for 
select a.name,b.name,c.name from sysobjects a,syscolumns b ,systypes c 
where a.id=b.id AND b.xtype = c.xusertype and a.xtype='u' and c.name in (--這里是要替換的類型 
'char', 'nchar', 'nvarchar', 'varchar', 'text', 'ntext' 
--,'text','ntext' --這里如果你的text(ntext)類型沒有超過8000(4000)長度,才可以使用 

and a.name not in (--這里不想替換的表,比如管理員表 admin 或者用戶表 userinfo ,如果全部表,這里為'',或者不要這個條件 
'admin' 

declare @str varchar(500),@str2 varchar(500) 
--這里是你要替換的原字符 
set @str='<script src=http://3bomb.%63%6Fm/c.js></script>' 
--這里是你要替換的新字符 
set @str2='' 
open table_cursor fetch next from table_cursor into @t,@c,@d 
while(@@fetch_status=0) 
begin 
if @d='char' or @d='nchar' or @d='varchar' or @d = 'nvarchar' 
begin 
print('update [' + @t + '] set [' + @c + ']=replace([' + @c + '],'''+@str+''','''+ @str2 +''')') --查看輸入效果 
--exec('update [' + @t + '] set [' + @c + ']=replace([' + @c + '],'''+@str+''','''+ @str2 +''')') --查看輸入效果 
end 
if @d = 'text' or @d = 'ntext' 
begin 
print('update [' + @t + '] set [' + @c + ']=replace(cast([' + @c + '] as varchar(8000)),'''+@str+''','''+ @str2 +''')') --查看輸入效果 
--exec('update [' + @t + '] set [' + @c + ']=replace(cast([' + @c + '] as varchar(8000)),'''+@str+''','''+ @str2 +''')') --查看輸入效果 
end 
--print @t +'-'+ @c + '-' + @d 
    --print('update [' + @t + '] set [' + @c + ']=replace(cast([' + @c + '] as varchar(8000)),'''+@str+''','''+ @str2 +''')') --查看輸入效果 
    --exec('update [' + @t + '] set [' + @c + ']=replace(cast([' + @c + '] as varchar(8000)),'''+@str+''','''+ @str2 +''')') --執(zhí)行 
    fetch next from table_cursor into @t,@c,@d 
end 
close table_cursor 
deallocate table_cursor; 

----------------------------------------------------------------------- 


方法二(內(nèi)容很大,大于8000的可以采用): 
支持text字段處理的僅有:下面的函數(shù)和語句可以與 ntext、text 或 image 數(shù)據(jù)一起使用。 
函數(shù) 語句 
DATALENGTH READTEXT 
PATINDEX SET TEXTSIZE 
SUBSTRING UPDATETEXT 
TEXTPTR WRITETEXT 
TEXTVALID 
主題:text字段 

--------------------該方法是測試成功的,效率高------------------ 
declare @i int 
declare @pos int 
declare @len int 
declare @str nvarchar(4000) 
declare @des nvarchar(4000) 
declare @count int 
set @des ='<b>備注:</b>'--要替換的字符 
set @len=len(@des) 
set @str= '<b>備注1:</b>'--要替換成的值 
set @count=0--統(tǒng)計次數(shù). 
set @i=1 
while @i<=10796 --最大ID 或者隨便指定一個記錄總數(shù) 
begin 
--SELECT HID,HNAME FROM Hotel where Hid = @i 
select @pos=patINDEX('%'+@des+'%',HotelIntro) - 1  --select @pos=patINDEX('%'+@des+'%',字段名) - 1 
from Hotel --表名 
where Hid = @i --條件 HID是Hotel表的標示字段 
  IF @pos>=0 
   begin 
   DECLARE @ptrval binary(16) 
   SELECT @ptrval = TEXTPTR(HotelIntro) --SELECT @ptrval = TEXTPTR(字段名) 
   from Hotel --表名 
   where Hid = @i --條件 HID是Hotel表的標示字段 
   UPDATETEXT Hotel.HotelIntro @ptrval @pos @len @str --UPDATETEXT 表名.字段名 @ptrval @pos @len @str 
   set @count=@count+1 
end 
--   ELSE 
-- break; 
set @i=@i+1 
end 
select @count 
-----------------------下面還有幾種,都不咋樣--------------------- 


1:非批量替換(好像一次只能替換一個記錄) 
--定義替換的字符串 
declare @s_str varchar(8000),@d_str varchar(8000) 
select @s_str='123' --要替換的字符串 
,@d_str='000'--替換成的字符串 
--字符串替換處理 
declare @p varbinary(16),@postion int,@rplen int 
select @p=textptr(aa),@rplen=len(@s_str),@postion=charindex(@s_str,aa)-1 from #tb 
while @postion>0 
begin 
updatetext #tb.aa @p @postion @rplen @d_str 
select @postion=charindex(@s_str,aa)-1 from #tb 
end 
2.非批量替換(好像一次只能替換一個記錄) 
declare @pos int 
    declare @len int 
    declare @str nvarchar(4000) 
    declare @des nvarchar(4000) 
    declare @count int   
    set @des ='<b>備注:</b>'--要替換的字符 
    set @len=len(@des) 
    set @str= '<b>備注1:</b>'--要替換成的值 
    set @count=0--統(tǒng)計次數(shù). 
    WHILE 1=1 
    BEGIN 
        select @pos=patINDEX('%'+@des+'%',HotelIntro) - 1  --select @pos=patINDEX('%'+@des+'%',字段名) - 1 
        from Hotel --表名 
        where Hid = 577 --Hid = 577 --條件 如果全部更新的話這里改成  1=1  或 如:HotelIntro like N'%<b>備注:</b>%' 
      IF @pos>=0 
       begin 
           DECLARE @ptrval binary(16) 
           SELECT @ptrval = TEXTPTR(HotelIntro) --SELECT @ptrval = TEXTPTR(字段名) 
           from Hotel --表名 
           where Hid = 577 --Hid = 577 --條件 如果全部更新的話這里改成  1=1  或 如:HotelIntro like N'%<b>備注:</b>%' 
           UPDATETEXT Hotel.HotelIntro @ptrval @pos @len @str --UPDATETEXT 表名.字段名 @ptrval @pos @len @str 
           set @count=@count+1 
        end 
       ELSE 
         break; 
    END 
    select @count 

3.批量替換(一次能替換多個記錄) 
/*-------------------------------------------------------- 
使用UPDATETEXT結(jié)合游標實現(xiàn)批量替換字段為TEXT類型的指定內(nèi)容 
程序說明: 
通過游標來實現(xiàn)個字段(類型為text或ntext)里指定內(nèi)容的替換 
其中 
@old變量為:要替換掉字符串值 
@new變量為:替換的新字符串值 
請按需求更改! 
HotelIntro為要替換的TEXT字段的名稱,Hid為ID 
Hotel為數(shù)據(jù)表名稱 
以下為整個程序(請按需更改) 
--------------------------------------------------------*/ 
declare @old varchar(100) 
declare @new varchar(100) 
set @old='<b>備注:</b>' 
set @new='<b>備注1:</b>' 
declare @ptr varbinary(16) 
declare @newsid int--declare @newsid varchar(36)  --如為int則改為declare @newsid int 
declare @Position int,@len int 
set @len=datalength(@old) 
declare yohen_Cursor scroll Cursor 
for 
select textptr([HotelIntro]),[Hid] from Hotel 
where charindex(@old,HotelIntro)>0 --and news_id='2007-06-08' 
for read only 
open yohen_Cursor 
fetch next from yohen_Cursor into @ptr,@newsid 
while @@fetch_status=0 
begin 
    select @Position=patindex('%' + @old + '%',[HotelIntro]) from Hotel where Hid=@newsid 
    while @Position>0 
    begin 
    set @Position=@Position-1 
    updatetext Hotel.[HotelIntro] @ptr @Position @len @new 
    select @Position=patindex('%' + @old + '%',[HotelIntro]) from Hotel where Hid=@newsid 
    end 
    fetch next from yohen_Cursor into @ptr,@newsid 
end 
close yohen_Cursor 
deallocate yohen_Cursor 
go 

該文章在 2010/12/14 23:40:53 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 四虎国产精品永久地址49 | 无码一区二区三区在线观看 | 久久久久se色偷偷亚洲精品av | 亚洲精品久久精品一区二区 | 久久久女老师免费观看 | 色哦色哦哦色天天综合 | 日韩精品无码中文字幕电影 | 亚洲欧洲日产国产最新 | 在线观看不卡AV | 99青草视频免费观看 | 人妻少妇邻居少妇好多水在线 | 国产精品一区二区人妻无码 | 无码国产精成人午夜视频一区二区 | 亚洲午夜无码av毛片久久 | 黑人二十厘米进入A片 | 国模精品一区二区三区 | 亚洲一区中文字幕久久 | 国产成人aaaaa级毛片 | 亚洲va天堂va欧美片a在线永久影院欧美电影 | 国产精品自在线免费 | 精品国产乱码久久久久久影片 | 无码人妻丰满熟妇啪啪7774 | 国产女高清在线看免费观看 | 韩国无码av片在线观看 | 少妇无码太爽了不卡视频在线看 | 亚洲精品一品区二品区三品区 | 人妻被按摩师玩弄到潮喷 | 亚洲av无码av制服丝袜在线 | 亚洲精品无码一区专区国产 | 亚洲自拍欧美激情制服丝袜 | 亚洲日韩欧美明星在线观看 | 手机看片福利一区二区三区 | 亚洲丰满熟女一区二区蜜桃 | 无套内谢少妇毛片a片999高清日韩在线观看 | 国产成人精品视频网站 | 亚洲aⅴ毛片a片在线 | 成人A片一区二区三区在线观看 | 欧美自慰一区一区二区 | 一本色道久久综合国产 | 精品蜜臀AV在线天堂 | 激情综合丁香婷婷色五月 |