`
逆风的香1314
  • 浏览: 1415917 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

模拟字符串处理函数 stuff 处理 Ntext 字段

阅读更多

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_stuff]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_stuff]
GO

/*--Ntext字段处理

 模拟字符串处理函数 stuff
 完成表中 ntext 字段的 stuff 处理
 注意,表中需要有列名为:id 的主键(或标识字段),数据类型为int
 如果没有这个主键字段,或者是其他类型,则对应的需要修改存储过程

--邹建 2004.07(引用请保留此信息)--*/

/*--调用示例

 --测试数据
 create table tb(id int identity(1,1),content ntext)
 insert tb select 'a;sd'
 union all select 'a;sdfkjas2qasdfdfsg45yhjhdfg45645a'
 
 --调用存储过程,将第8~9的字符替换成'中国'
 exec p_stuff 'tb','content',8,2,'中国',''
 select * from tb
 
 drop table tb
--*/

create proc p_stuff
@tbname sysname, --要处理的表名
@fdname sysname, --text/ntext字段名
@start int=null, --开始位置,NULL表示追加数据
@length int=null, --替换的长度
@str nvarchar(4000),--要插入的字符串
@where nvarchar(1000)=''--要处理的记录的条件
as
if @str is null return
declare @s nvarchar(4000)
set @s='
declare @id int,@ptr varbinary(16),@start1 int

declare tb cursor local for
select id,start=datalength(['+@fdname+'])/2
from ['+@tbname+']
'+case isnull(@where,'') when '' then ''
 else ' where '+@where end+'

open tb
fetch tb into @id,@start1
while @@fetch_status=0
begin
 select @ptr=textptr(content)
 from ['+@tbname+']
 where id=@id

 if @start is null or @start1<@start
  updatetext ['+@tbname+'].['+@fdname+'] @ptr null null @str
 else
 begin
  set @start1=@start-1
  updatetext ['+@tbname+'].['+@fdname+'] @ptr @start1 @length @str
 end
 fetch tb into @id,@start1
end
close tb
deallocate tb
'
exec sp_executesql @s
 ,N'@start int,@length int,@str nvarchar(4000)'
 ,@start,@length,@str
go

分享到:
评论

相关推荐

    sqlserver 字符串分割表函数(新写法) fn_split 成表函数(带序号)

    sqlserver 字符串分割表函数(新写法) fn_split 成表函数(带序号)

    SQL Server 中 text或ntext 字段内容替换方法

    在不确定text或ntext字段长度的时候 SQL Server 中 text或ntext 字段内容替换方法

    sql server替换textntext类型字段的值

    因为 text/ntext 类型字段的存储方式与其他数据类型不同,它们需要使用特殊的处理方式来进行值的替换。 在 SQL Server 中,text/ntext 类型字段的存储方式是基于指针的,每个文本字段都对应一个指针,指向文本数据...

    整个数据库内字符串搜索

    如果输入的字符串为空,则直接返回,避免不必要的处理。 ```sql if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_search]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop ...

    sql server函数学习总结

    `SUBSTRING(expression,start,length)` 是 SQL Server 中一个非常重要的字符串处理函数,用于从指定的表达式 `expression` 中提取子字符串。此函数通常用于处理和格式化数据。 **参数说明:** - **expression**:...

    sqlserver 中ntext字段的批量替换(updatetext的用法)

    为了解决上述问题,可以创建一个通用的存储过程`[dbo].[Proc_UpdateNTextField]`,这个存储过程使用`updatetext`来逐个替换`ntext`字段中的特定字符串。存储过程的参数包括目标表名、目标字段名、主键字段名以及需要...

    SQL中函数 replace 的参数1的数据类型ntext无效的解决方法

    在SQL(Structured Query Language)中,`REPLACE`函数是一个非常实用的字符串处理函数,它用于在指定的字符串中查找并替换所有匹配的目标子串。然而,在某些情况下,特别是涉及大数据类型如`ntext`时,可能会遇到...

    mssql查找备注(text,ntext)类型字段为空的方法

    当你试图像处理普通字符字段那样直接用`=`操作符来检查`text`或`ntext`字段是否为空时,SQL Server会抛出错误,因为这些数据类型不支持直接的空字符串比较。以下是一些有效的方法来检查`text`和`ntext`字段是否为空...

    php读取mssql的ntext字段返回值为空的解决方法

    3. **使用转换函数**:在查询时,可以使用SQL转换函数来处理ntext字段。例如,如果字段title是nvarchar,content是ntext,可以这样编写查询: ```sql SELECT convert(varchar(255), title) as title, convert(text...

    sql ntext数据类型字符替换实现代码

    代码如下: —ntext数据类型字符替换 create table tt ( sid INT IDENTITY(1,1), cont ntext ) go insert into tt(cont) values(N’fd sad fdsa 涂聚文工团 缔友计算机信息技术有限公司 可能性 桔柑 ‘) go update tt...

    pymssql ntext字段调用问题解决方法

    总结来说,虽然`pymssql`不直接支持`ntext`字段,但通过将查询中的`ntext`字段转换为`TEXT`,并适当设置`TEXTSIZE`,仍然可以成功获取和处理数据。不过,长远来看,考虑到微软已不再支持DB-Library,最佳实践是升级...

    SQL的split函数(自定义)new

    然而,并非所有的数据库系统都内置了能够高效处理大字符串(例如Ntext类型)的Split函数。因此,本文将详细介绍一种针对SQL Server环境的自定义Split函数,该函数可以支持Ntext类型的大字符串输入。 #### 二、背景...

    SQLserver查询数据类型为ntext是空或NULL值的方法

    例如,如果我们使用 is null 或 = '' 来判断 ntext 数据类型是否为空或 NULL,可能会出现误判情况,因为 ntext 数据类型可以存储空字符串或 NULL 值。 结论 查询数据类型为 ntext 是空或 NULL 值的方法可以使用 ...

    经典SQL脚本大全

    │ │ 3.2 各种字符串分拆处理函数.sql │ │ 3.3 各种字符串合并处理示例.sql │ │ 3.4.1 分段截取函数.sql │ │ 3.4.2 分段更新函数.sql │ │ 3.4.3 IP地址处理函数.sql │ │ 3.5.1 字符串比较函数.sql │ │ ...

    sql server 2012 数据库所有表里查找某字符串的方法

    这个过程涉及到使用动态SQL和游标来遍历数据库中的所有表和字符串类型的字段。 首先,确保你已经在正确的数据库上下文中,通过`USE [数据库名称];`切换到目标数据库。接下来,定义要搜索的关键字,这里我们使用变量...

    MSSQL中所有字段类型的区别

    char、varchar、text 是用于存储字符串类型的数据,而 nchar、nvarchar、ntext 是用于存储 Unicode 字符串类型的数据。 1. char char 类型用于存储定长数据,例如定义 char(10),那么不论你存储的数据是否达到了 ...

    SQL中NTEXT字段内容显示&amp;lt;long text&amp;gt;的原因

    然而,在某些情况下,当你尝试查看`NTEXT`字段的内容时,可能会看到字段值被显示为`&lt;long text&gt;`,这通常是因为数据的处理方式和显示限制导致的。 `&lt;long text&gt;`并不是实际存储的数据,而是SQL Server Management ...

Global site tag (gtag.js) - Google Analytics