ntext字段的REPLACE处理示例.sql
--测试数据
CREATE TABLE tb(col ntext)
INSERT tb VALUES(REPLICATE( '0001,0002,0003,0004,0005,0006,0007,0008,0009,0100,'
+'220000001,302000004,500200006,700002008,900002120,',800))
DECLARE @p binary(16)
SELECT @p=TEXTPTR(col) FROM tb
UPDATETEXT tb.col @p NULL 0 tb.col @p
GO
--替换处理定义
DECLARE @s_str nvarchar(1000),@r_str nvarchar(1000)
SELECT @s_str='00' --要替换的字符串
,@r_str='0000' --替换成该字符串
DECLARE @p varbinary(16)
DECLARE @start int,@s nvarchar(4000),@len int
DECLARE @s_len int,@step int,@last_repl int,@pos int
--替换处理参数设置
SELECT
--用于要判断每次截取数据,最后一个被替换数据位置的处理
@s_len=LEN(@s_str),
--设置每次应该截取的数据的长度,防止REPLACE后数据溢出
@step=CASE WHEN LEN(@r_str)>LEN(@s_str)
THEN 4000/LEN(@r_str)*LEN(@s_str)
ELSE 4000 END
--替换处理的开始位置
SELECT @start=PATINDEX('%'+@s_str+'%',col),
@p=TEXTPTR(col),
@s=SUBSTRING(col,@start,@step),
@len=LEN(@s),
@last_repl=0
FROM tb
WHERE PATINDEX('%'+@s_str+'%',col)>0
AND TEXTVALID('tb.col',TEXTPTR(col))=1
WHILE @len>=@s_len
BEGIN
--得到最后一个被替换数据的位置
WHILE CHARINDEX(@s_str,@s,@last_repl)>0
SET @last_repl=@s_len
+CHARINDEX(@s_str,@s,@last_repl)
--如果需要,更新数据,同时判断下一个取数位置的偏移量
IF @last_repl=0
SET @last_repl=@s_len
ELSE
BEGIN
SELECT @last_repl=CASE
WHEN @len<@last_repl THEN 1
WHEN @len-@last_repl>=@s_len THEN @s_len
ELSE @len-@last_repl+2 END,
@s=REPLACE(@s,@s_str,@r_str),
@pos=@start-1
UPDATETEXT TB.col @p @pos @len @s
END
--获取下一个要处理的数据
SELECT @start=@start+LEN(@s)-@last_repl+1,
@s=SUBSTRING(col,@start,@step),
@len=LEN(@s),
@last_repl=0
FROM tb
END
GO
--显示处理结果
SELECT datalength(col),* FROM tb
DROP TABLE tb
转载于:https://www.cnblogs.com/dushu/archive/2012/05/18/2507713.html
ntext字段的REPLACE处理示例.sql相关推荐
- ntext字段的替换处理示例--全表替换
Mission 1 : 根据需要,将数据库存储文章内容的字段中的域名www.a.com.cn 替换为 www.b.com.cn. 如此典型的问题 先看SQL server的联机手册, USE Nort ...
- ntext字段的替换处理示例--全表替换(作者:邹建)
--ntext字段的替换处理示例--全表替换 --测试数据 create table test(id varchar(3),txt ntext) insert into test select '1' ...
- sql 字段内容局部替换, sql删除或替换字段内内容
因为业务更换了域名,之前上传的 图片路径 webpath需要统一更换 所以我这里使用sql的方法进行替换 update 数据表 set 字段名=replace(字段名,'https://123.bai ...
- sql 拼接int类型的字段_这才是SQL优化的正确姿势!
文末扫海报二维码领[30份Excel可视化数据看板] 磊哥 | 作者 Java中文社群 | 来源 全文内容预览: 当然,本篇是关于性能优化的,那性能优化就应该一把梭子吗?还是要符合一些规范和原则呢? ...
- 查询某字段不重复记录的SQL语句
查询文章信息articleInfo表中的articleAuthor字段不重复记录的SQL如下: SELECT * FROM articleInfo AS A WHERE articleID IN (S ...
- mysql分享群_MySQL数据库 字段群组的示例分享
摘要: 下文讲述MySQL字段群组的示例简介说明,如下所示: 例: drop table if exists T_maomao; create table T_maomao select 'maoma ...
- oracle中删除表字段 sql语句怎么写,oracle使用sql语句增加字段示例(sql删除字段语句)...
添加字段的语法:alter table tablename add (column datatype [default value][null/not null],-.); 修改字段的语法:alter ...
- mysql orderby 规则_MySQL中OrderBy多字段排序规则代码示例
说在前面 突发奇想,想了解一下mysql order by排序是以什么规则进行的? 好了,话不多说,直接进入正题吧. MySql order by 单字段 建一测试表如下: CREATE TABLE ...
- 【原创】sql:慎用【数字字段1 - 数字字段2】这样的sql(10-null = null)mysql
如果只有一个表的情况下 a表: id num1,num2 1 10 5 2 10 0 3 20 0 select id, num1,num2,num1 - num2 AS subNum from a; ...
最新文章
- java无阻塞执行脚本,JAVA调用Shell脚本-及阻塞的解决方法
- c语言未命名exe,用dev-c++编译出现问题,求大神解答啊
- 文件打开不关闭程序会输出吗_干货!很多资深用户都不知道的10个BOOX阅读器使用技巧,很实用!...
- angularJs 跨控制器与跨页面传值
- Python第一章-基础知识
- python在win7中不能运行_Python3.6在win7中无法正常运行的问题
- [转]如何使用 DirectX 診斷工具判斷 DirectX 的版本
- 20191202_k-中心聚类算法和k-mean算法Python实现
- MASM5及LINK命令行
- Scala中的Option
- 计算机毕业设计Java-超市会员积分管理系统
- 请假代码java web_学生请假管理系统
- 分享在实际项目中积累的硬件调试经验 - 调试方法,以及常见调试案例
- python方差检验分析(ANOVA)
- Nature证实:学术界刮起离职潮!大批学者涌向工业界,互助文档日均20个学者离职...
- 智能锁忘记密码怎么办
- 三、IDEA更换主题皮肤
- 乔布斯传阅读体会【持续更新】
- 【综述】数学系小白入门图像分割
- 每日三个笑话-201510116
热门文章
- 在LINUX下安装 Sybase ASE 11.0.3.3
- IPV6 IPV4双栈互通与静态路由
- python 查找excel内容所在的单元格_python 根据excel单元格内容获取该单元格所在的行号...
- python 日志输出变量_python中记录打印的log模块logging的用法实例
- cad 打开硬件加速卡_老司机手把手带你解决,各种CAD疑难杂症
- 分层架构、六边形架构、CQRS架构模式解读
- c#导出Excel及操作
- mysql 一行取最大值_mysql 分组取最大值的同时获取包含最大值的行的其他字段
- find函数常见错误_终于找到你,查找函数,find必不可少
- 当前微型计算机的主存储器可分为,当前微型计算机的主存储器可分为