程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> SQL Server中text或ntext 字段內容替換方法

SQL Server中text或ntext 字段內容替換方法

編輯:MySQL綜合教程

SQL Server中text或ntext 字段內容替換方法


   update 表名

  set text類型字段名=replace(convert(varchar(8000),text類型字段名),'要替換的字符','替換成的值')

  1.update ntext:

  (1)varchar和nvarchar類型是支持replace,所以如果你的text/ntext不超過8000/4000可以先轉換成前面兩種類型再使用replace。

  update 表名

  set text類型字段名=replace(convert(varchar(8000),text類型字段名),'要替換的字符','替換成的值')

  update 表名

  set ntext類型字段名=replace(convert(nvarchar(4000),ntext類型字段名),'要替換的字符','替換成的值')

  (2)如果text/ntext超過8000/4000,看如下例子

  declare @pos int

  declare @len int

  declare @str nvarchar(4000)

  declare @des nvarchar(4000)

  declare @count int

  set @des ='

  set @len=len(@des)

  set @str= ''--要替換的字符

  set @count=0--統計次數.

  WHILE 1=1

  BEGIN

  select @pos=patINDEX('%'+@des+'%',propxmldata) - 1

  from 表名

  where 條件

  IF @pos>=0

  begin

  DECLARE @ptrval binary(16)

  SELECT @ptrval = TEXTPTR(字段名)

  from 表名

  where 條件

  UPDATETEXT 表名.字段名 @ptrval @pos @len @str

  set @count=@count+1

  end

  ELSE

  break;

  END

  select @count

  2.alter column語句有局限性,比如不允許修改text、image、ntext 或 timestamp 列.

  以下提供一個修改ntext列的例子:

  Alter Table tbl Add newcol ntext null

  go

  update tbl set newcol=col

  go

  EXEC sp_rename 'tbl.col', 'oldcol', 'COLUMN'

  go

  EXEC sp_rename 'tbl.newcol', 'col', 'COLUMN'

  go

  alter table tbl drop column oldcol

  go

  以上通過新增一列替換舊的列方法實現了將一個不允許為空的ntext修改為允許為空的ntext列(注意:以上的go不能缺少).修改表結構之後,由於視圖所依賴的基礎對象的更改,視圖的持久元數據會過期,需要刷新視圖,通過sp_refreshview (可以通過sp_depends 找處相關的視圖,再通過sp_refreshview逐個刷新).

  另外可以也可以通過一下存儲過程進行刷新所有視圖:

  PRINT 'Refreshing all views...'

  DECLARE @vName sysname

  DECLARE refresh_cursor CURSOR FOR

  SELECT Name from sysobjects WHERE xtype = 'V'

  order by crdate

  FOR READ ONLY

  OPEN refresh_cursor

  FETCH NEXT FROM refresh_cursor

  INTO @vName

  WHILE @@FETCH_STATUS <> -1

  BEGIN

  exec sp_refreshview @vName

  PRINT '視圖' + @vName + ' refreshed'

  FETCH NEXT FROM refresh_cursor

  INTO @vName

  END

  CLOSE refresh_cursor

  DEALLOCATE refresh_cursor

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved