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

时间: 2024-10-04 01:36:02

SQL Server中text或ntext 字段内容替换方法的相关文章

SQL Server中自动获取编号字段

  ①像Access中的自动编号字段 右键你的表-->设计表-->找到你的id字段(类int型)-->标识-->是-->标识种子(初始值)-->标识递增量-->OK ②用IDENTITY (SEED,INCREMENT)参数 seed -启始值 increment -增量 CREATE TABLE 表名( 你的ID IDENTITY (1, 1) NOT NULL ,你的其他字段... ) CREATE TABLE 表名( 你的字段ID AUTOINCREMENT

SQL Server 中调整自增字段的当前初始值_MsSql

前几天在把一个Communtiy Server 的数据库从SQL 2000升级到SQL 2005 的时候,碰到一个怪异的问题,报如下错误: Violation of PRIMARY KEY constraint 'PK_cs_Threads'. Cannot insert duplicate key in object 'dbo.cs_Threads'. 分析进去后,竟然发现这个表的自增字段数据库中已经达到了6144,而数据库维护的这个表的初始自增值只到6109. 解决方法很简单,利用以下SQL

SQL Server 中调整自增字段的当前初始值

前几天在把一个Communtiy Server 的数据库从SQL 2000升级到SQL 2005 的时候,碰到一个怪异的问题,报如下错误: Violation of PRIMARY KEY constraint 'PK_cs_Threads'. Cannot insert duplicate key in object 'dbo.cs_Threads'. 分析进去后,竟然发现这个表的自增字段数据库中已经达到了6144,而数据库维护的这个表的初始自增值只到6109. 解决方法很简单,利用以下SQL

SQL Server中删除重复数据的几个方法

  数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置-- 方法一 declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=

SQL Server中删除重复数据的几个方法_MsSql

方法一 复制代码 代码如下: declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount

SQL Server中查询时显示行号的方法

server|显示 Select no=Identity(int,1,1),* Into #temptable From TableName --Order By SortFieldSelect * From #temptable  --Where no>=6 And no < 10Drop Table #temptable转自:动态网制作指南 www.knowsky.com

SQL Server中生成测试数据

原文:SQL Server中生成测试数据 简介      在实际的开发过程中.很多情况下我们都需要在数据库中插入大量测试数据来对程序的功能进行测试.而生成的测试数据往往需要符合特定规则.虽然可以自己写一段程序来进行插入数据,但每一个项目就写一个插入数据的程序并不明智.本文主要介绍使用VS2010的数据生成计划在SQL Server中生成测试数据.   生成测试数据的方法      1.手动编辑           在开发过程中,非常少量的数据可以手动插入.这个方法的缺点可想而知-.插入100条数

[Python]Python/PHP如何查询sql server中NTEXT类型数据

[Python]Python/PHP如何查询sql server中NTEXT类型数据 Version Date Creator Description 1.0.0.1 2006-11-23 郑昀 草稿   继续阅读之前,我们假设您熟悉以下知识: n         Python / PHP n         SQL Server 2000 SP4以上版本的Microsoft sql server n         pymssql n         NTEXT类型 本文讨论了在Python中

关于SQL Server中bit类型字段增删查改的一些事

前言 本文主要给大家介绍了关于SQL Server中bit类型字段增删查改的一些事,话说BIT类型字段之前,先看"诡异"的一幕,执行Update成功,但是查询出来的结果依然是1,而不是Update的2 当别人问起我来的时候,本人当时也是处于懵逼状态的,后面联想具体的业务突然想起来这个字段是bit类型的 如果把这个现象跟BIT类型字段连续起来就不觉得奇怪了. 废话不多,直接上代码看结果就好了. 先建一个测试表 CREATE TABLE TestBIT ( Id INT IDENTITY(