有表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 行受影响)
*/
分享到:
相关推荐
- 数据分区:根据特定条件(如日期、地区等)拆分数据,便于管理和分析。 3. 拆分方式: - 行数拆分:按照行数来拆分,例如每1000行作为一个新的文件。 - 字段值拆分:基于特定字段的值进行拆分,比如根据日期...
VBA中式排名方法 拆分数据.xls
提供3种拆分方式: 1.按属性批量拆分,按属性值命名数据 2.按A矢量范围批量拆分数据B,并按A属性值命名数据 3.将gdb数据各图层拆分为独立gdb
今天由于工作需要,需要把数据把列根据指定的内容拆分数据 其中一条数据实例 select id , XXXX FROM BIZ_PAPER where id =’4af210ec675927fa016772bf7dd025b0′ 拆分方法: select t3.id ,t3.XXXX as XXXX ...
VBA 按照某一列进行筛选拆分数据,拆分成多个表或多个Sheet,按某列检查重复生成新的Sheet,删除除本表外的所有表
在大数据处理领域,高效的数据操作是关键,而Map和List作为两种常见的数据...通过合理地拆分数据,可以充分利用分布式系统的计算资源,加快处理速度,同时降低单个节点的压力,从而在大数据挑战中取得更好的性能表现。
在描述中提到的“处理和不处理拆分数据”两种模式,可能指的是是否立即处理接收到的每个数据块,或者先缓存起来,等到收到完整帧的标志或校验和后才进行处理。这种策略对于处理不同类型的串口协议至关重要,因为某些...
1、在40h和41h输入两个数值,进行比较; 2、将较大的值保存到60h,较小的值保存到61h中。
JavaScript汉字拆分是一种技术,通过JavaScript编程语言来分析和分解汉字结构。汉字通常由不同的部首和部件组成,这些组成部分可以被拆分开来,有助于理解和识别汉字。在提供的代码中,`cz.mfkdb`是一个数组,包含了...
按指定列将一个sheet内的数据拆分成多个sheet
1. **选择目标单元格:** 选中含有待拆分数据的单元格。 2. **点击快速填充按钮:** 在Excel的编辑栏中,找到并点击快速填充图标(通常显示为“=”号旁的一个箭头)。 3. **查看并确认拆分结果:** 快速填充会根据...
python groupby实现Excel数据按某字段分组后,根据分组名将Excel数据拆分为多个Excel
为了改善这种情况,可以使用各种技巧和功能来拆分数据,例如创建子表、使用数据透视表或者编写宏(VBA)来实现自动化。 描述中的 "自动拆分总表数据" 指出这个压缩包可能包含一个或多个工具或脚本,能够自动将一个...
3) 股票拆分数据:股票拆分事件的记录,显示每次拆分的日期和拆分比率。 数据来源于 Alpha Vantage API,该 API 提供全面的金融市场数据。数据集经过清理和格式化,以确保一致性和准确性。然后,它们将保存在 CSV ...
数据拆分工具是一种高效实用的软件,主要用于处理和管理大量数据或文档,使得大文件能够按照用户需求被拆分成多个小文件。这种工具在各种场景下都有广泛应用,比如数据分析、数据库管理、文件传输等。在现代信息技术...
3. **文本分列向导 - 第一步**:在“文本分列向导 - 3 步骤之 1”界面,通常默认选择的是“分隔符号”,因为这里我们将依据某种字符或空白来拆分数据。点击“下一步”按钮进入下一步骤。 4. **文本分列向导 - 第二...
该数据可用户时间序列分析、异常分析、维度波动归因(时间周期为3个月,来做时间序列分析可能较短)
基于FME制定的模板工具,可以按照给定的多个区域,从一个数据集分离出各自区域内的数据,数据结构不变
4、最后多个sheet是否能够按拆分数据标准合并成一个excel文件,主要看每次拆分时的给新文件起的名称是否一致,文件存在则新增sheet,不存在则创建文件。 另有附带小工具函数: 获取数量列号的英文字母、判断字符...