Ntext字段拆分处理

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

/*--Ntext字段拆分处理

 按指定的分隔符,将 ntext 字段拆分成多条记录 注意:处理过程固定以名为id的int型字段为主键 如果不满足这个条件,则要对应的修改存储过程

--邹建 2004.07--*/

/*--调用示例

 --测试数据 create table tb(id int identity(1,1),content ntext) insert tb select '001,002' union all select '001,002,003,004,005,006,007,008,009,010' union all select replicate('001,002,003,004,005,006,007,008,009,010',8000)

  --调用存储过程,进行拆分 exec p_split 'tb','content',',','id=3'

 drop table tb--*/

create proc p_split@tbname sysname,  --要处理的表名@fdname sysname,  --text/ntext字段名@splitchar nvarchar(10)=',',--拆分的字符串分隔符@where nvarchar(1000)=''--要处理的记录的条件asif isnull(@splitchar,'')='' set @splitchar=','

declare @s nvarchar(4000)set @s='create table #t(id int identity(1,1),re nvarchar(50))declare @id int,@ptr varbinary(16)declare @s nvarchar(4000),@i int,@j intdeclare @sp1 varchar(10),@step int

select @sp1=reverse(@splitchar),@step=len(@splitchar)

declare tb cursor local for select id,s=substring(['+@fdname+'],1,4000)from ['+@tbname+']where datalength(['+@fdname+'])>0 '+case isnull(@where,'') when '' then ''  else ' and('+@where+')' end+'

open tb fetch tb into @id,@swhile @@fetch_status=0begin set @i=1 while @s<>'''' begin  if len(@s)=4000   select @j=4000-charindex(@sp1,reverse(@s))    ,@i=@i+@j+@step    ,@s=left(@s,@j)  else    select @i=@i+4000,@j=len(@s)  insert #t select substring(@s,id,charindex(@splitchar,@s+@splitchar,id)-id)  from 序数表  where id<=@j+@step and charindex(@splitchar,@splitchar+@s,id)-id=0  select @s=substring(['+@fdname+'],@i,4000)  from ['+@tbname+']  where id=@id end

 fetch tb into @id,@sendclose tbdeallocate tbselect * from #t'exec sp_executesql @s ,N'@splitchar nvarchar(10)' ,@splitchargo

时间: 2024-12-12 02:32:45

Ntext字段拆分处理的相关文章

sql TEXT、NTEXT字段拆分的问题

  sql TEXT.NTEXT字段拆分的问题 SET NOCOUNT ONCREATE TABLE #T (C NTEXT)GOINSERT INTO #T VALUES('')GOCREATE TABLE #T2 (C CHAR(8))GO DECLARE @S1 VARCHAR(8000),@S2 VARCHAR(8000),@I INTSET @S1=''SET @S2=''SET @I=1WHILE @I<=1000BEGIN   SET @S1=@S1+'A'+RIGHT('0000

模拟字符串处理函数 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 的主键(或标识字段),数据类型为

模拟字符串处理函数 stuff 的存储过程,对 ntext 字段进行stuff .

存储过程|函数|字符串 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 的主键(或标识字段),数据类

sql server 怎么判断一个表里面的字段拆分之后是否可以在另一个表的字段里面查到数据

问题描述 sql server 怎么判断一个表里面的字段拆分之后是否可以在另一个表的字段里面查到数据 其中F_Split是分割以逗号连接的字符串的方法 怎么判断string字段拆分之后的数据是否能在@a表中的id字段找到对应的记录 insert into @a(idname)values(1'A')insert into @a(idname)values(2'B')insert into @a(idname)values(3'C')select * from @ainsert into @c(s

oracle sql 字段拆分-oracle 以|分割的长字段拆分成多个(很多)字段

问题描述 oracle 以|分割的长字段拆分成多个(很多)字段 现在遇到一个表,有上千万条记录,只有一个字段,字段文本文字是以'|'分割的,一条记录200多个分隔符.我想把它拆分成多个字段,不是拆成多行,该怎么办?求大神指教一二,最好能给个脚本什么的. 如下: 201304|张三|0214||3547|336|aaa|2|01|.... 201304|李四|0244|23547|3315654|||01||||c||....

ADO.NET 通过updatetext 如何更新 ntext字段?困扰我两周了!

问题描述 现有数据库是基于SQLSERVER2000创建的,其中一张表有个字段是ntext类型,现在需要把二进制文件更新到此字段,我按照MSDN的方法,代码如下:intBUFFER_LENGTH=10240;stringstrConnection="server=localhost;database=test;uid=sa;pwd=123456";SqlConnectionobjConnection=newSqlConnection(strConnection);objConnecti

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

下面是调用方式: Example script - pymssql module (DB API 2.0) Example script - _mssql module (lower level DB access) 不过,在我使用过程中,发现,如果表中包含了ntext字段,就会出错,提示 不能用 DB-Library(如 ISQL)或 ODBC 3.7 或更早版本将 ntext 数据或仅使用 Unicode排序规则的 Unicode 数据发送到客户端. 查了一下,发现官方网站有解释: Q: W

php与mssql的ntext字段错误总结

在网上找了很久,都是说 php 读 ntext 出错的,但没发现我的页面出错,就郁闷了.后来才查到是说 php 默认最大只能读 4K 的内容,原来是我的内容超过了 4K.修改方法如 下: 1.把 php 升级到 php5 .     还好,我的已经是 php5 了. 2.调整 php.ini 的参数,把 php 默认最大只能读 4K 改大一点.     ; Valid range 0 - 2147483647.  Default = 4096.     ;mssql.textlimit = 40

SQL字段拆分优化_MsSql

今天看到一条用函数处理连接的SQL,是群里某位网友的,SQL语句如下: SELECT SO_Order.fdate , SO_Order.fsn FROM so_order INNER JOIN so_orderitem ON CHARINDEX(so_Orderitem.fid, SO_Order.fid) >= 1 WHERE so_order.FOrderDate = '2015-09-06' 语句不算复杂,只是执行比较慢,下面是关于这SQL语句的一些信息: --1.SQL执行203条数据