當前位置:成語大全網 - 書法字典 - sql語句中的replace有錯誤。我應該用什麽來代替它?

sql語句中的replace有錯誤。我應該用什麽來代替它?

二、用法舉例

1,替換

-創建數據測試環境

創建表格#tb(aa文本)

插入#tb選擇' abc123abc123,asd '

-定義要替換的字符串。

聲明@s_str varchar(8000),@d_str varchar(8000)

Select @ s _ str =' 123 ',-要替換的字符串。

@ d _ str = ' 000 '-被替換的字符串。

-字符串替換處理

聲明@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 & gt0

開始

updatetext # TB . aa @ p @ position @ rplen @ d _ str

select @ position = charindex(@ s _ str,aa)-1 from #tb

結束

-顯示結果

select * from #tb

-刪除數據測試環境

刪除表#tb

2.把它們都換掉

聲明@ptrval二進制文件(16)

聲明@ptrvld int

Select @ ptrval = textptr (aa),@ ptrvld = textvalid ('# tb.aa ',text ptr(aa))from # TB where alike ' % data 2% '

-壹定要加上條件判斷,否則如果找不到目標文件指針,下壹條SQL會給出錯誤(很重要!)

如果@ptrval不為空並且@ptrvld = 1

updatetext # TB . aa @ ptr val on null '數據3 '

3.在字段末尾添加

-定義添加的字符串。

declare @s_str varchar(8000)

select @ s _ str = ' * c '-要添加的字符串。

-字符串添加處理

聲明@p varbinary(16),@ postion int,@rplen int

select @ p = text ptr(detail)from test where id = ' 001 '

updatetext test . detail @ p null null @ s _ str

第三,總結

文本字段類型不能直接用replace函數替換,必須用updatetext替換;;

字段比較不能使用where field =' some data ',但可以使用like代替;

updatetext時,如果dest_text_ptr的值為NULL,會報錯,壹定要小心。錯誤消息:向UpdateText函數傳遞了NULL textptr(text、ntext或image指針)。請註意,當BLOB列為null且其行不為空時,dest_text_prt不為NULL,如果BOLB的行為空,則dest_text_prt為NULL。Delete_length必須小於或等於字段的總長度,否則將報告錯誤:刪除長度不在可用的text、ntext或image數據範圍內。

PATINDEX/CHARINDEX函數都返回指定模式的起始位置。PATINDEX可以使用通配符,但CHARINDEX不能。IS NULL、IS NOT NULL和LIKE,這是WHERE子句中對text/ntext類型有效的唯壹其他比較操作。此外,PATINDEX還可以用在WHERE子句中;

使用TEXTVALID檢查文本指針是否存在。UPDATETEXT、WRITETEXT或READTEXT。沒有有效的文本指針,無法使用;例如,選擇“有效(如果1)文本數據”

= TEXTVALID ('pub_info.logo ',text ptr(logo))FROM pub _ info WHERE logo like ' % hello % ';

LEN只對短字符類型有效,對於text/ntext/image類型,DATALENGTH用於獲取數據長度;