Mission 1 : 根据需要,将数据库存储文章内容的字段中的域名www.a.com.cn 替换为 www.b.com.cn。
如此典型的问题 先看SQL server的联机手册,
USE Northwind
GO
CREATE TABLE TextParts (ColA INT PRIMARY KEY, ColB TEXT)
GO
INSERT INTO TextParts
   VALUES( 1,
           'Sample string START TAG Text to go END TAG Trailing text.')
GO
DECLARE @PtrVar BINARY(16)
DECLARE @InsertPos INT
DECLARE @DeleteLen INT
 
SELECT @PtrVar = TEXTPTR(ColB),
       @InsertPos = (PATINDEX('%START TAG%', ColB) + 9),
       @DeleteLen = (
                      PATINDEX('%END TAG%', ColB) -
                      ( PATINDEX('%START TAG%', ColB) + 9
                              + 2 /* allow for blanks */ )
                    )
FROM TextParts
WHERE ColA = 1
 
UPDATETEXT TextParts.ColB
           @PtrVar
           @InsertPos
           @DeleteLen
           WITH LOG
           'The new text'
GO
 
SELECT * FROM TextParts
GO
 
由最后的 SELECT 语句得出的结果集为:
 
ColA        ColB
----------- ------------------------------------------------------------
1           Sample string START TAG The new text END TAG Trailing text.
看来替换的问题解决了,批量替换可能有点麻烦,google吧, 有了http://www.kaidianle.com/article/list16537.html

declare @old varchar(100),@new varchar(100)
set @old='/PicDB/Collection.aspx'
set @new='/PicDB/AlbumView.aspx'
declare @ptr varbinary(16)
declare @newsid int
declare @Position int,@len int
set @len=datalength(@old)

declare wux_Cursor scroll Cursor
for
select textptr([news_content]),[newsid] from music_news
where charindex(@old,news_content)>0
   --and newsid=3093
for read only

open wux_Cursor
fetch next from wux_Cursor into @ptr,@newsid
while @@fetch_status=0
begin
    select @Position=patindex('%' + @old + '%',[news_content]) from music_news where [newsid]=@newsid
    while @Position>0
    begin
    set @Position=@Position-1
     updatetext music_news.[news_content] @ptr @Position @len @new
     select @Position=patindex('%' + @old + '%',[news_content]) from music_news where [newsid]=@newsid
    end
    fetch next from wux_Cursor into @ptr,@newsid
end
close wux_cursor
deallocate wux_cursor
go

用上游标了,不过可以参考了。修改后,很好用!Mission Complete

declare @old varchar(100),@new varchar(100)

set @old='www.a.com.cn'
set @new='www.b.com.cn'

declare @ptr varbinary(16)
declare @newsid int
declare @Position int,@len int

set @len=datalength(@old)

declare wux_Cursor scroll Cursor
for
 select textptr(content),ArticleID from PE_Article
 where charindex(@old,content)>0 and channelID=1017
 for read only
 open wux_Cursor
 fetch next from wux_Cursor into @ptr,@newsid
 while @@fetch_status=0
 begin
     select @Position=patindex('%' + @old + '%',content) from PE_Article where ArticleID=@newsid
     while @Position>0
     begin
     set @Position=@Position-1
      updatetext PE_Article.content @ptr @Position @len @new
      select @Position=patindex('%' + @old + '%',content) from PE_Article where ArticleID=@newsid
     end
     fetch next from wux_Cursor into @ptr,@newsid
 end
close wux_cursor
deallocate wux_cursor
go

又找了找,还是邹捷的不错,呵呵

--ntext字段的替换处理示例--全表替换

--测试数据
create table test(id varchar(3),txt ntext)
insert into test
select '1','abc我是中a国人
deaf;sdakj21432
我要处理中文'
go

--定义替换的字符串
declare @s_str varchar(8000),@r_str varchar(8000)
select @s_str='
' --要替换的字符串
,@r_str='<P>'--替换成的字符串

--替换处理
declare @id int,@ptr varbinary(16)
declare @start int,@s nvarchar(4000),@len int
declare @s_str1 nvarchar(4000),@s_len int,@i int,@step int

select @s_str1=reverse(@s_str),@s_len=len(@s_str)
,@step=case when len(@r_str)>len(@s_str)
then 4000/len(@r_str)*len(@s_str)
else 4000 end

declare tb cursor local for
select id,start=charindex(@s_str,[txt])-1
from [test]
where charindex(@s_str,[txt])>0
--这里可以定义要处理的记录的条件

open tb
fetch tb into @id,@start
while @@fetch_status=0
begin
select @ptr=textptr([txt])
,@s=substring([txt],@start+1,@step)
from [test]
where id=@id

while len(@s)>=@s_len
begin
select @len=len(@s),@i=charindex(@s_str1,reverse(@s))
if @i>0
begin
select @i=case when @i>=@s_len then @s_len else @i end
,@s=replace(@s,@s_str,@r_str)
updatetext [test].[txt] @ptr @start @len @s
end
else
set @i=@s_len
select @start=@start+len(@s)-@i+1
,@s=substring([txt],@start+1,@step)
from [test]
where id=@id
end
fetch tb into @id,@start
end
close tb
deallocate tb
go

--显示处理结果
select * from test
go

--删除测试
drop table test

/*--测试结果

id   txt                                           
---- -----------------------------------------------
1    abc我是中a国人<P>deaf;sdakj21432<P>我要处理中文

(所影响的行数为 1 行)
--*/

ntext字段的替换处理示例--全表替换相关推荐

  1. ntext字段的替换处理示例--全表替换(作者:邹建)

    --ntext字段的替换处理示例--全表替换 --测试数据 create table test(id varchar(3),txt ntext) insert into test select '1' ...

  2. MySQL5.6 更改字段属性仍旧会锁全表,注意这个坑!

    如图: 如果开发让修改表字段属性,建议用pt-online-schema-change.MySQL5.6的在线DDL会锁全表.注意这个坑. 另外,增加.删除字段或索引不会锁全表,删除主键会锁全表.

  3. ntext字段的REPLACE处理示例.sql

    --测试数据 CREATE TABLE tb(col ntext) INSERT tb VALUES(REPLICATE( '0001,0002,0003,0004,0005,0006,0007,00 ...

  4. java字符替换函数示例_Java字符串替换函数replace()用法解析

    Java字符串替换函数replace()用法解析 这篇文章主要介绍了Java字符串替换函数replace()用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的 ...

  5. 索引法则--LIKE以%开头会导致索引失效进而转向全表扫描(使用覆盖索引解决)...

    Mysql 系列文章主页 =============== 1 准备数据 1.1 建表 DROP TABLE IF EXISTS staff; CREATE TABLE IF NOT EXISTS st ...

  6. 设计模式之里氏替换原则示例

    设计模式之里氏替换原则示例 里氏替换原则强调的是设计和实现要依赖于抽象而非具体:子类只能去扩展基类,而不是隐藏或者覆盖基类,它包含4层含义. 一.里氏替换4原则 1.子类可以实现父类的抽象方法,但不能 ...

  7. mysql存储过程更新数据后返回一个字段_史上最全存储引擎、索引使用及SQL优化的实践...

    整个MySQL Server由以下组成 : Connection Pool :连接池组件 Management Services & Utilities :管理服务和工具组件 SQL Inte ...

  8. SQL数据库不用SQL语句能显示全表的内容_MySQL百万级数据库优化方案

    一.百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断 ...

  9. oracle全表扫过程讲解,CSS_浅谈存取Oracle当中扫描数据的方法,1) 全表扫描(Full Table Scans, FTS) - phpStudy...

    浅谈存取Oracle当中扫描数据的方法 1) 全表扫描(Full Table Scans, FTS) 为实现全表扫描,Oracle读取表中所有的行,并检查每一行是否满足语句的WHERE限制条件一个多块 ...

最新文章

  1. 博途v13打开软件时显示连接不到服务器,TIA博途V13软件在打开程序过程中出现以下这种情况,怎么回事?...
  2. 虚幻中的风格化环境制作学习教程
  3. Java重写父类使用@Override时出现The method destroy() of type xxx must override a superclass method的问题解决...
  4. 用C语言解“12-24小时制”题
  5. 每天学一点儿shell:vi和vim命令使用
  6. 「神策 2021 数据驱动大会」杭州站火热开启!
  7. tensorflow综合示例5:图象分割
  8. 申请 Let's Encrypt 数字证书,并安装cerbot快速上手教程~~
  9. C#回车切换焦点实现实例解析
  10. 2. Windows编程基础
  11. 一年多 Let’s Encrypt 的 SSL 证书使用有感
  12. HDU 4919 打表找规律 java睑板 map 递归
  13. 计算机组成原理CPUCLK什么,计算机组成原理之CPU原理.pdf
  14. 电力系统分析—潮流计算代码Python编程练习(基于极坐标形式的常规牛拉法)
  15. 计算机组装需要注意什么东西,自己组装电脑需注意事项图文详情
  16. 全球及中国中线静脉插管行业研究及十四五规划分析报告
  17. 关于web项目log日志指定输出文件位置配置
  18. 神奇葩! 史上最牛的博士论文答辩
  19. 别错过他们砍预算留给你的机会
  20. 十六进制颜色值和ARGB颜色值的转换

热门文章

  1. 关于getSource()简单说明
  2. 程序员撩妹专用~~~好看的H5立方体创意相册,资源免费!!!程序员送给女孩子的礼物,非常适合送给小姐姐!
  3. 为什么不敢和别人竞争_三千亿碧桂园的残酷竞争:别人能,你为什么不能?
  4. 急刹车是否踩离合器?别犹豫,踩。
  5. Cross_entropy和softmax
  6. TreeSet引发的OSGI服务代理创建异常
  7. 人类月球日 | 专访邹海洋:中国的航天梦,是信任与不辜负的故事
  8. 年化超额收益计算matlab,超额年化收益率的计算 看了一下雪球上一些雪友贴出的基金或大V的历年收益率,发现一些人统计的不对,想说一下: 1.超额收益率 某基金当年收益率为... - 雪球...
  9. re管理器修改音量_[教程] 自己手动修改音量键和开机键的功能方法(小更新)
  10. 钢绞线的弹性模量的计算方法_钢绞线伸长量计算方法.doc