ntext字段的替换处理示例--全表替换(作者:邹建)
--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字段的替换处理示例--全表替换(作者:邹建)相关推荐
- ntext字段的替换处理示例--全表替换
Mission 1 : 根据需要,将数据库存储文章内容的字段中的域名www.a.com.cn 替换为 www.b.com.cn. 如此典型的问题 先看SQL server的联机手册, USE Nort ...
- MySQL5.6 更改字段属性仍旧会锁全表,注意这个坑!
如图: 如果开发让修改表字段属性,建议用pt-online-schema-change.MySQL5.6的在线DDL会锁全表.注意这个坑. 另外,增加.删除字段或索引不会锁全表,删除主键会锁全表.
- ntext字段的REPLACE处理示例.sql
--测试数据 CREATE TABLE tb(col ntext) INSERT tb VALUES(REPLICATE( '0001,0002,0003,0004,0005,0006,0007,00 ...
- java字符替换函数示例_Java字符串替换函数replace()用法解析
Java字符串替换函数replace()用法解析 这篇文章主要介绍了Java字符串替换函数replace()用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的 ...
- 索引法则--LIKE以%开头会导致索引失效进而转向全表扫描(使用覆盖索引解决)...
Mysql 系列文章主页 =============== 1 准备数据 1.1 建表 DROP TABLE IF EXISTS staff; CREATE TABLE IF NOT EXISTS st ...
- 设计模式之里氏替换原则示例
设计模式之里氏替换原则示例 里氏替换原则强调的是设计和实现要依赖于抽象而非具体:子类只能去扩展基类,而不是隐藏或者覆盖基类,它包含4层含义. 一.里氏替换4原则 1.子类可以实现父类的抽象方法,但不能 ...
- mysql存储过程更新数据后返回一个字段_史上最全存储引擎、索引使用及SQL优化的实践...
整个MySQL Server由以下组成 : Connection Pool :连接池组件 Management Services & Utilities :管理服务和工具组件 SQL Inte ...
- SQL数据库不用SQL语句能显示全表的内容_MySQL百万级数据库优化方案
一.百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断 ...
- oracle全表扫过程讲解,CSS_浅谈存取Oracle当中扫描数据的方法,1) 全表扫描(Full Table Scans, FTS) - phpStudy...
浅谈存取Oracle当中扫描数据的方法 1) 全表扫描(Full Table Scans, FTS) 为实现全表扫描,Oracle读取表中所有的行,并检查每一行是否满足语句的WHERE限制条件一个多块 ...
最新文章
- 机器学习工程师正在失业,但学习依旧是唯一的出路
- Select2控件的多选
- 3d制作中需要注意的问题_珠宝首饰工艺篇-戒指3D造型设计制作注意要点
- LeetCode刷题——75. 颜色分类
- 深入浅出InfoPath——如何在项目中引用GAC中的dll文件
- 2 EDA技术实用教程【Verilog 语句基本类型】
- beetle-j2ee-application-framework框架介绍.md
- Qnap NAS + Emby Server + Kodi
- 微信公众号开发之消息模板
- catalina java opts_CATALINA_OPTS与JAVA_OPTS – 有什么区别?
- 说说Stack Overflow和Quora
- 基于ZYNQ的VGA驱动
- 【ceph】ceph分布式存储MDS(各种状态、源码)
- AT指令整理 模块:BC28
- 2020年了,Android开发者应该会哪些东西才不会被公司淘汰?
- PPT修改幻灯片大小
- html制作图像画廊,创建 Web 照片画廊 (Photoshop)
- statement suspended, wait error to be cleared
- zabbix分布式监控被动模式代理
- 一种近红外I区荧光染料ICG-CBT 主要应用领域,是药品监督管理局(FDA)批准的体内应用染料