不用游标,解析一个字段,成为多条记录.

leecyi 2005-04-26 10:42:28

字段一 日期
-----------------------------------------------------------------------------
PT054004,1279; PT054004,711;PT054004,1284 2005-05-07
PT054004,42116;PT054004,1279;PT054004,711;PT054004,1284 2005-05-14
PT054004,42115;PT054004,42116 2005-05-11

结果:

字段一
-------------------------------------------------------------------------
PT054004,1279; 2005-05-07
PT054004,711; 2005-05-07
PT054004,1284 2005-05-07
PT054004,42116; 2005-05-14
PT054004,1279; 2005-05-14
PT054004,711; 2005-05-14
PT054004,1284 2005-05-14
PT054004,42115; 2005-05-11
PT054004,42116 2005-05-11
...全文
126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2005-04-26
  • 打赏
  • 举报
回复
--示例数据

create table tb(字段一 varchar(8000),日期 varchar(10))
insert tb select 'PT054004,1279; PT054004,711;PT054004,1284','2005-05-07'
union all select 'PT054004,42116;PT054004,1279;PT054004,711;PT054004,1284','2005-05-14'
union all select 'PT054004,42115;PT054004,42116','2005-05-11'
go

--查询处理
select top 8000 id=identity(int) into # from syscolumns a,syscolumns b
select 字段一=substring(a.字段一,b.id,charindex(';',a.字段一+';',b.id)-b.id+1),a.日期
from tb a,# b
where substring(';'+a.字段一,b.id,1)=';' and len(a.字段一)>=b.id
drop table #
go

--删除测试
drop table tb

/*--结果
字段一 日期
------------------------- -------------
PT054004,1279; 2005-05-07
PT054004,711; 2005-05-07
PT054004,1284 2005-05-07
PT054004,42116; 2005-05-14
PT054004,1279; 2005-05-14
PT054004,711; 2005-05-14
PT054004,1284 2005-05-14
PT054004,42115; 2005-05-11
PT054004,42116 2005-05-11

(所影响的行数为 9 行)
--*/
friendliu 2005-04-26
  • 打赏
  • 举报
回复
用游标吧,一条一条的遍历,容易实现
wudan8057 2005-04-26
  • 打赏
  • 举报
回复
不用游标是不可能实现的.

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧