--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

/*--测试结果*/

转载于:https://www.cnblogs.com/lhxhappy/archive/2007/08/01/838287.html

ntext字段的替换处理示例--全表替换(作者:邹建)相关推荐

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

    Mission 1 : 根据需要,将数据库存储文章内容的字段中的域名www.a.com.cn 替换为 www.b.com.cn. 如此典型的问题 先看SQL server的联机手册, USE Nort ...

  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. 机器学习工程师正在失业,但学习依旧是唯一的出路
  2. Select2控件的多选
  3. 3d制作中需要注意的问题_珠宝首饰工艺篇-戒指3D造型设计制作注意要点
  4. LeetCode刷题——75. 颜色分类
  5. 深入浅出InfoPath——如何在项目中引用GAC中的dll文件
  6. 2 EDA技术实用教程【Verilog 语句基本类型】
  7. beetle-j2ee-application-framework框架介绍.md
  8. Qnap NAS + Emby Server + Kodi
  9. 微信公众号开发之消息模板
  10. catalina java opts_CATALINA_OPTS与JAVA_OPTS – 有什么区别?
  11. 说说Stack Overflow和Quora
  12. 基于ZYNQ的VGA驱动
  13. 【ceph】ceph分布式存储MDS(各种状态、源码)
  14. AT指令整理 模块:BC28
  15. 2020年了,Android开发者应该会哪些东西才不会被公司淘汰?
  16. PPT修改幻灯片大小
  17. html制作图像画廊,创建 Web 照片画廊 (Photoshop)
  18. statement suspended, wait error to be cleared
  19. zabbix分布式监控被动模式代理
  20. 一种近红外I区荧光染料ICG-CBT 主要应用领域,是药品监督管理局(FDA)批准的体内应用染料

热门文章

  1. Python 学习笔记 - 作用域小知识
  2. 《CCNA无线640-722认证考试指南》——5.4节其他无线拓扑
  3. codevs3143 二叉树的序遍历
  4. UFT开发代码实例:将Excel中的数据保存为数组
  5. [UML]UML系列——时序图(顺序图)sequence diagram
  6. Cisco Enhanced Object Tracking
  7. ORACLE LATERAL-SQL-INJECTION 个人见解
  8. 配置IIS服务器,支持sis下载
  9. 流畅的python 函数
  10. C语言函数多个返回值