澳门新葡亰553311b > 新葡亰 计算机网络 > SQL Server中text或ntext 字段内容替换方法

SQL Server中text或ntext 字段内容替换方法
2019-12-13 01:55

    declare @str nvarchar(4000)

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('%'[email protected]+'%',propxmldata)

  • 1

  from 表名

  where 条件

  IF @pos>=0

  begin

  DECLARE @ptrval binary(16)

  SELECT @ptrval = TEXTPTR(字段名)

  from 表名

  where 条件

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

  set @[email protected]+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

Server中text或ntext 字段内容替换方法 update 表名 set text类型字段名=replace(convert(varchar(8000),text类型字段名),'要替换的字符','替换成的值')...

      begin

下面就是对这个函数的简要介绍以及范例。

例:把表table中的name字段中的 aa替换为bbupdate table set name=replace(name,'aa','bb')

刚开始,Update AA 表 Set xx字段=Replace(xx字段,"要替换的","特定串") ,出现错误:函数 replace 的参数 1 的数据类型 ntext 无效。Update article set heading=Replace(convert(nvarchar(4000),heading),'<script></script>','')

29

 

 

          from 表名

今天在工作的过程中碰到一个问题,要把数据库中某个列的所有值中含有"shop.xxxx.net"的字符更换成"www.nowamagic.net",本来可以写个脚本,把所有的值都取出再用php进行处理,但是那样就效率非常低了,想到看试下能不能直接在MySQL中用SQL语句直接来处理,经过一番搜索,终于找到解决方案,其实最重要的是mysql的replace函数,关于这个函数的介绍,我在MySQL手册中是没看懂,不过能实现我想要的功能就行。  www.2cto.com  

3

33

06

           DECLARE @ptrval binary(16)

31

 

05

11

把object中出现search的全部替换为replaceselect replace('www.163.com','w','Ww')—>WwW wWw.163.com

07

用法1.replace intoreplace into table (id,name) values('1','aa'),('2','bb')

varchar和nvarchar类型是支持replace,所以如果你的text/ntext不超过8000/4000可以先转换成前面两种类型再使用replace。

22

14

1

mysql>   SELECT   REPLACE('www.mysql.com',   'w',   'Ww');

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

 

UPDATE  `dede_archives`  SET title=  REPLACE ( title,'简明现代魔法 – '," );

declare @pos int

mysql replace

update 表名

UPDATE  `dede_addonarticle`  SET body =  REPLACE ( body,'</tr>'," );

UPDATE  `dede_addonarticle`  SET body =  REPLACE ( body,'<tr>'," );

24

25

在字符串 str 中所有出现的字符串 from_str 均被 to_str替换,然后返回这个字符串:

          where 条件

update 表名

01

       where 条件

18

26

       from 表名

2

此语句的作用是向表table中插入两条记录。

    WHILE 1=1

28

 

13

   set @count=0--统计次数.

今天在工作的过程中碰到一个问题,要把数据库中某个列的所有值中含有shop.xxxx.net的字符更换成www.nowamagic.net,本来...

      IF @pos>=0

       select @pos=patINDEX('%'[email protected]+'%',propxmldata)

   set @str= '<requested_amount>'--要替换的字符

UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def');

16

02

2

UPDATE  `dede_addonarticle`  SET body =  REPLACE ( body,'</td>'," );

上一篇:MySQL数据库主从同步第四版 下一篇:没有了