数据库字段拆分成多条数据记录
2011-10-09 12:56
267 查看
--分拆处理示例
create table table1(文章ID int,文章标题 varchar(10),作者 varchar(100),字数 int)
insert table1 select 101, '文章标题1 ', '作者a,作者b ' ,120
union all select 222, '文章标题2 ', '作者x,作者y,作者z ',300
union all select 343, '文章标题3 ', '作者m,作者n ' ,420
go
--分拆处理
declare @i int
select @i=max(len(作者)) from table1
set rowcount @i
select id=identity(int) into #t from syscolumns a,syscolumns b
set rowcount 0
select a.文章ID,a.文章标题
,作者=substring(a.作者,b.id,charindex( ',',a.作者+ ',',b.id)-b.id)
,字数=a.字数/(len(a.作者)-len(replace(a.作者, ',', ''))+1)
from table1 a,#t b
where b.id <=len(a.作者) and substring( ','+a.作者,b.id,1)= ','
go
--删除测试
drop table table1,#t
with temp as
(select tid,[examitem]=cast(left([examitem],charindex('◆',[examitem]+'◆')-1) as nvarchar(100)),Split=cast(stuff([examitem]+'◆',1,charindex('◆',[examitem]+'◆'),'') as nvarchar(100)) from exam
union all
select tid,[examitem]=cast(left(Split,charindex('◆',Split)-1) as nvarchar(100)),Split= cast(stuff(Split,1,charindex('◆',Split),'') as nvarchar(100)) from temp where split>''
)
select tid,[examitem] from temp order by tid
create table table1(文章ID int,文章标题 varchar(10),作者 varchar(100),字数 int)
insert table1 select 101, '文章标题1 ', '作者a,作者b ' ,120
union all select 222, '文章标题2 ', '作者x,作者y,作者z ',300
union all select 343, '文章标题3 ', '作者m,作者n ' ,420
go
--分拆处理
declare @i int
select @i=max(len(作者)) from table1
set rowcount @i
select id=identity(int) into #t from syscolumns a,syscolumns b
set rowcount 0
select a.文章ID,a.文章标题
,作者=substring(a.作者,b.id,charindex( ',',a.作者+ ',',b.id)-b.id)
,字数=a.字数/(len(a.作者)-len(replace(a.作者, ',', ''))+1)
from table1 a,#t b
where b.id <=len(a.作者) and substring( ','+a.作者,b.id,1)= ','
go
--删除测试
drop table table1,#t
with temp as
(select tid,[examitem]=cast(left([examitem],charindex('◆',[examitem]+'◆')-1) as nvarchar(100)),Split=cast(stuff([examitem]+'◆',1,charindex('◆',[examitem]+'◆'),'') as nvarchar(100)) from exam
union all
select tid,[examitem]=cast(left(Split,charindex('◆',Split)-1) as nvarchar(100)),Split= cast(stuff(Split,1,charindex('◆',Split),'') as nvarchar(100)) from temp where split>''
)
select tid,[examitem] from temp order by tid
相关文章推荐
- 拆分数据库字段中字符串,以表的形式返回
- Oracle中将一条记录(某字段中为合并的信息)拆分成多条记录
- 数据库json字段拆分成新字段
- 循环SQL语句实现,将一个数字字段的商数拆分成多条记录
- 将包含分号的字段值拆分成多条记录
- SQL 多条记录整合到一个字段 一个字段拆分多条记录
- 数据库拆分字段
- 有规律字段拆分(2005的解决方案)
- 数据库组件 Hxj.Data (二十七)(字段组合更新)
- mybatis开启数据库字段自动映射为java驼峰命名规则
- 数据库字段为ntext时nhibernate配置文件不对导致页面修改后的数据无法得到
- 获取数据库所有表名与字段名
- sql语句一条记录拆分为多条记录
- 1、@Transient @[email protected]�射,ORM框架将忽略该属性; 如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架默认其注解为@B
- 读取数据库信息构建视图字段的备注信息,方便程序代码生成
- 数据库text类型字段作为查询条件的终极解决办法
- 修改数据库字段中的XML思路
- 参数2字段按逗号拆分,拆分后每个单词对应一行
- 删除数据库字段中的汉字或字符
- [VB.NET]数据库排序字符的数字字段