SQL Server 2005 ntext字段的REPLACE處理

SQL Server2005開發應用實例──ntext字段的REPLACE處理示例:

--測試數據

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

 
模擬字符串處理函數 stuff 處理 Ntext 字段
模擬字符串處理函數 stuff 處理 Ntext 字段 模擬字符串處理函數 stuff 處理 Ntext 字段 if exists (select * from dbo.sysobjects where id = object_id(N'.[p_stuff]') and OBJECTPROPERTY(id, N'IsProcedu...查看完整版>>模擬字符串處理函數 stuff 處理 Ntext 字段
 
模擬字符串處理函數 stuff 處理 Ntext 字段
if exists (select * from dbo.sysobjects where id = object_id(N'.[p_stuff]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure .[p_stuff]GO /*--Ntext字段處理 模擬字符串處理函數 stuff 完成表中 ...查看完整版>>模擬字符串處理函數 stuff 處理 Ntext 字段
 
SQL Server 2005日志文件損壞的處理方法
在實際的工作和學習中,許多人的SQL Server 2005數據庫日志文件可能會發生損壞,例如硬件故障、計算機非正常重啓或關機等等。 在SQL Server 2005的日志文件損壞時,你會發現以下的情況: ◆1、在SQL Server Manageme...查看完整版>>SQL Server 2005日志文件損壞的處理方法
 
SQL Server 2005安裝失敗的處理方法
錯誤案例:在Microsoft Virtual PC 2007和一台筆記本電腦上安裝MSDN訂閱下載的SQL Server 2005企業版時出現問題。安裝環境爲windows Server 2003 企業版 + sp1,另外一個系統是帶sp2的,安裝用戶使用超級管理員(Adm...查看完整版>>SQL Server 2005安裝失敗的處理方法
 
Java中讀取SQL Server數據庫空字段異常的Bug
這兩天一直被一個問題困擾許久,自己的數據庫查詢中老是報異常 信息如下 method:ytd.software.businesslogic.db.dao.XAlarmTitleInfoDao.getAllResult(Unknown Source) 查找X_AlarmTitle...查看完整版>>Java中讀取SQL Server數據庫空字段異常的Bug