`
wangyunlei
  • 浏览: 30489 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

拆分数据

阅读更多

有表tb, 如下:
id          value
----------- -----------
1           aa,bb
2           aaa,bbb,ccc
欲按id,分拆value列, 分拆后结果如下:
id          value
----------- --------
1           aa
1           bb
2           aaa
2           bbb
2           ccc
*/

--1. 旧的解决方法(sql server 2000)

create table tb(id int,value varchar(30))
insert into tb values(1,'aa,bb')
insert into tb values(2,'aaa,bbb,ccc')
go

--方法1.使用临时表完成
SELECT TOP 8000 id = IDENTITY(int, 1, 1) INTO # FROM syscolumns a, syscolumns b

SELECT A.id, value = SUBSTRING(A.[value], B.id, CHARINDEX(',', A.[value] + ',', B.id) - B.id)
FROM tb A, # B
WHERE SUBSTRING(',' + A.[value], B.id, 1) = ','

DROP TABLE #

--方法2.如果数据量小,可不使用临时表
select a.id , value = substring(a.value , b.number , charindex(',' , a.value + ',' , b.number) - b.number)
from tb a join master..spt_values  b
on b.type='p' and b.number between 1 and len(a.value)
where substring(',' + a.value , b.number , 1) = ','

--2. 新的解决方法(sql server 2005)
create table tb(id int,value varchar(30))
insert into tb values(1,'aa,bb')
insert into tb values(2,'aaa,bbb,ccc')
go

--方法1.使用xml完成
SELECT A.id, B.value FROM
(
 
SELECT id, [value] = CONVERT(xml,'<root><v>' + REPLACE([value], ',', '</v><v>') + '</v></root>') FROM tb
) A
OUTER APPLY
(
 
SELECT value = N.v.value('.', 'varchar(100)') FROM A.[value].nodes('/root/v') N(v)
) B

--方法2.使用CTE完成
;with tt as
(
select id,[value]=cast(left([value],charindex(',',[value]+',')-1) as nvarchar(100)),Split=cast(stuff([value]+',',1,charindex(',',[value]+','),'') as nvarchar(100)) from tb
union all
select id,[value]=cast(left(Split,charindex(',',Split)-1) as nvarchar(100)),Split= cast(stuff(Split,1,charindex(',',Split),'') as nvarchar(100)) from tt where split>''
)
select id,[value] from tt order by id option (MAXRECURSION 0)


DROP TABLE tb

/*
id          value
----------- ------------------------------
1           aa
1           bb
2           aaa
2           bbb
2           ccc

(5 行受影响)
*/

分享到:
评论

相关推荐

    csv数据拆分软件

    - 数据分区:根据特定条件(如日期、地区等)拆分数据,便于管理和分析。 3. 拆分方式: - 行数拆分:按照行数来拆分,例如每1000行作为一个新的文件。 - 字段值拆分:基于特定字段的值进行拆分,比如根据日期...

    VBA中式排名方法及拆分数据.xls

    VBA中式排名方法 拆分数据.xls

    ArcGIS批量拆分数据工具箱

    提供3种拆分方式: 1.按属性批量拆分,按属性值命名数据 2.按A矢量范围批量拆分数据B,并按A属性值命名数据 3.将gdb数据各图层拆分为独立gdb

    Sql Server数据把列根据指定内容拆分数据的方法实例

    今天由于工作需要,需要把数据把列根据指定的内容拆分数据 其中一条数据实例  select id , XXXX FROM BIZ_PAPER where id =’4af210ec675927fa016772bf7dd025b0′   拆分方法: select t3.id ,t3.XXXX as XXXX ...

    VBA 按照某一列进行筛选拆分数据,拆分成多个表或多个Sheet,按某列检查重复生成新的Sheet,删除除本表外的所有表

    VBA 按照某一列进行筛选拆分数据,拆分成多个表或多个Sheet,按某列检查重复生成新的Sheet,删除除本表外的所有表

    Map拆分List拆分

    在大数据处理领域,高效的数据操作是关键,而Map和List作为两种常见的数据...通过合理地拆分数据,可以充分利用分布式系统的计算资源,加快处理速度,同时降低单个节点的压力,从而在大数据挑战中取得更好的性能表现。

    串口数据解析,将自动拆分的数据整合成完整的一帧

    在描述中提到的“处理和不处理拆分数据”两种模式,可能指的是是否立即处理接收到的每个数据块,或者先缓存起来,等到收到完整帧的标志或校验和后才进行处理。这种策略对于处理不同类型的串口协议至关重要,因为某些...

    比较大小和拆分数据

    1、在40h和41h输入两个数值,进行比较; 2、将较大的值保存到60h,较小的值保存到61h中。

    JavaScript拆分汉字代码

    JavaScript汉字拆分是一种技术,通过JavaScript编程语言来分析和分解汉字结构。汉字通常由不同的部首和部件组成,这些组成部分可以被拆分开来,有助于理解和识别汉字。在提供的代码中,`cz.mfkdb`是一个数组,包含了...

    按指定列拆分数据的工具

    按指定列将一个sheet内的数据拆分成多个sheet

    如何拆分单元格多重数据

    1. **选择目标单元格:** 选中含有待拆分数据的单元格。 2. **点击快速填充按钮:** 在Excel的编辑栏中,找到并点击快速填充图标(通常显示为“=”号旁的一个箭头)。 3. **查看并确认拆分结果:** 快速填充会根据...

    python实现Excel数据拆分

    python groupby实现Excel数据按某字段分组后,根据分组名将Excel数据拆分为多个Excel

    自动拆分总表数据.zip

    为了改善这种情况,可以使用各种技巧和功能来拆分数据,例如创建子表、使用数据透视表或者编写宏(VBA)来实现自动化。 描述中的 "自动拆分总表数据" 指出这个压缩包可能包含一个或多个工具或脚本,能够自动将一个...

    文档数据拆分工具

    数据拆分工具是一种高效实用的软件,主要用于处理和管理大量数据或文档,使得大文件能够按照用户需求被拆分成多个小文件。这种工具在各种场景下都有广泛应用,比如数据分析、数据库管理、文件传输等。在现代信息技术...

    Excel中列数据的拆分的方法.docx

    3. **文本分列向导 - 第一步**:在“文本分列向导 - 3 步骤之 1”界面,通常默认选择的是“分隔符号”,因为这里我们将依据某种字符或空白来拆分数据。点击“下一步”按钮进入下一步骤。 4. **文本分列向导 - 第二...

    日活及按城市和机型拆分数据

    该数据可用户时间序列分析、异常分析、维度波动归因(时间周期为3个月,来做时间序列分析可能较短)

    FME模板-按区域分离数据集

    基于FME制定的模板工具,可以按照给定的多个区域,从一个数据集分离出各自区域内的数据,数据结构不变

    VBA宏脚本自动拆分EXCEL表

    4、最后多个sheet是否能够按拆分数据标准合并成一个excel文件,主要看每次拆分时的给新文件起的名称是否一致,文件存在则新增sheet,不存在则创建文件。 另有附带小工具函数: 获取数量列号的英文字母、判断字符...

    python自动办公源码_Python分块拆分txt文件中的数据.rar

    在这个例子中,`chunk_size`决定了每次读取文件的字节数,`strip()`用于去除行尾的换行符,`split(',')`则根据逗号拆分数据。实际应用中,你需要根据具体的数据格式和需求调整`split()`的分隔符。 此Python源码实例...

Global site tag (gtag.js) - Google Analytics