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 成表函数(带序号)
在不确定text或ntext字段长度的时候 SQL Server 中 text或ntext 字段内容替换方法
因为 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 ...
`SUBSTRING(expression,start,length)` 是 SQL Server 中一个非常重要的字符串处理函数,用于从指定的表达式 `expression` 中提取子字符串。此函数通常用于处理和格式化数据。 **参数说明:** - **expression**:...
为了解决上述问题,可以创建一个通用的存储过程`[dbo].[Proc_UpdateNTextField]`,这个存储过程使用`updatetext`来逐个替换`ntext`字段中的特定字符串。存储过程的参数包括目标表名、目标字段名、主键字段名以及需要...
当你试图像处理普通字符字段那样直接用`=`操作符来检查`text`或`ntext`字段是否为空时,SQL Server会抛出错误,因为这些数据类型不支持直接的空字符串比较。以下是一些有效的方法来检查`text`和`ntext`字段是否为空...
在SQL(Structured Query Language)中,`REPLACE`函数是一个非常实用的字符串处理函数,它用于在指定的字符串中查找并替换所有匹配的目标子串。然而,在某些情况下,特别是涉及大数据类型如`ntext`时,可能会遇到...
3. **使用转换函数**:在查询时,可以使用SQL转换函数来处理ntext字段。例如,如果字段title是nvarchar,content是ntext,可以这样编写查询: ```sql SELECT convert(varchar(255), title) as title, convert(text...
代码如下: —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`字段,但通过将查询中的`ntext`字段转换为`TEXT`,并适当设置`TEXTSIZE`,仍然可以成功获取和处理数据。不过,长远来看,考虑到微软已不再支持DB-Library,最佳实践是升级...
然而,并非所有的数据库系统都内置了能够高效处理大字符串(例如Ntext类型)的Split函数。因此,本文将详细介绍一种针对SQL Server环境的自定义Split函数,该函数可以支持Ntext类型的大字符串输入。 #### 二、背景...
例如,如果我们使用 is null 或 = '' 来判断 ntext 数据类型是否为空或 NULL,可能会出现误判情况,因为 ntext 数据类型可以存储空字符串或 NULL 值。 结论 查询数据类型为 ntext 是空或 NULL 值的方法可以使用 ...
│ │ 3.2 各种字符串分拆处理函数.sql │ │ 3.3 各种字符串合并处理示例.sql │ │ 3.4.1 分段截取函数.sql │ │ 3.4.2 分段更新函数.sql │ │ 3.4.3 IP地址处理函数.sql │ │ 3.5.1 字符串比较函数.sql │ │ ...
这个过程涉及到使用动态SQL和游标来遍历数据库中的所有表和字符串类型的字段。 首先,确保你已经在正确的数据库上下文中,通过`USE [数据库名称];`切换到目标数据库。接下来,定义要搜索的关键字,这里我们使用变量...
char、varchar、text 是用于存储字符串类型的数据,而 nchar、nvarchar、ntext 是用于存储 Unicode 字符串类型的数据。 1. char char 类型用于存储定长数据,例如定义 char(10),那么不论你存储的数据是否达到了 ...
SQL 中的 `substring` 函数是一个非常实用的功能,它允许你在处理字符串数据时提取特定部分。这个函数在不同的数据库管理系统(DBMS)中可能有不同的名称,例如 MySQL 使用 `SUBSTR()` 或 `SUBSTRING()`,Oracle ...