1。varchar和nvarchar型別是支援replace,所以如果你的text不超過8000可以先轉換成前面兩種型別再使用replace。
update 表名
set 欄位名=replace(convert(varchar(8000),欄位名), '要替換的字元 ', '替換成的值 ')
2。如果你的text大於8000,可以用下面的方法:
--測試資料
create table tb(col ntext)
insert tb values(replicate( '0001,0002,0003,0004,0005,0006,0007,0008,0009,0100, '
+ '220000001,302000004,500200006,700002008,900002120, ',800))
declare @p binary(16)
select @p=textptr(col) from tb
updatetext tb.col @p null 0 tb.col @p
go --替換處理定義
declare @s_str nvarchar(1000),@r_str nvarchar(1000)
select @s_str= '00 ' --要替換的字串
,@r_str= '0000 ' --替換成該字串
declare @p varbinary(16)
declare @start int,@s nvarchar(4000),@len int
declare @s_len int,@step int,@last_repl int,@pos int
--替換處理引數設定
select
--用於要判斷每次擷取資料,最後乙個被替換資料位置的處理
@s_len=len(@s_str),
--設定每次應該擷取的資料的長度,防止replace後資料溢位
@step=case when len(@r_str)> len(@s_str)
then 4000/len(@r_str)*len(@s_str)
else 4000 end
--替換處理的開始位置
select @start=patindex( '% '+@s_str+ '% ',col),
@p=textptr(col),
@s=substring(col,@start,@step),
@len=len(@s),
@last_repl=0
from tb
where patindex( '% '+@s_str+ '% ',col)> 0
and textvalid( 'tb.col ',textptr(col))=1
while @len> =@s_len
begin
--得到最後乙個被替換資料的位置
while charindex(@s_str,@s,@last_repl)> 0
set @last_repl=@s_len
+charindex(@s_str,@s,@last_repl)
--如果需要,更新資料,同時判斷下乙個取數字置的偏移量
if @last_repl=0
set @last_repl=@s_len
else
begin
select @last_repl=case
when @len <@last_repl then 1
when @len-@last_repl> =@s_len then @s_len
else @len-@last_repl+2 end,
@s=replace(@s,@s_str,@r_str),
@pos=@start-1
updatetext tb.col @p @pos @len @s
end
--獲取下乙個要處理的資料
select @start=@start+len(@s)-@last_repl+1,
@s=substring(col,@start,@step),
@len=len(@s),
@last_repl=0
from tb
end
go --顯示處理結果
select datalength(col),* from tb
drop table tb
上面說的是針對ntext欄位的替換處理,如果要處理text欄位,只需要先轉換成ntext欄位然後儲存在臨時表裡面,處理完以後再從臨時表寫回text就行了。
其實一般象text,ntext欄位這些都是抓到程式裡面去處理的。
資料庫中欄位型別對應C 中的資料型別
資料庫 c 程式 int int32 text string bigint int64 binary system.byte bit boolean char string datetime system.datetime decimal system.decimal float system.do...
Access中的資料型別和字段屬性
資料型別 用途 文字字元 數字或字元與數字的任意組合,不能用於計算。最長255個字元,預設長度為50個字元。對於指定的大小,存放中文漢字與英文本母的個數都是一樣的 備註超長的文字,用於注釋或說明,最長65535個字元 數字用於計算的值,1 2 4或8位元組 日期 時間 表示日期和時間,可用於計算,最...
資料庫中欄位型別對應的C 中的資料型別
microsoft zh.cn原文 資料庫中欄位型別對應的c 中的資料型別 2016.4 資料庫 c 程式 int int32 text string bigint int64 binary system.byte bit boolean char string datetime system.da...