博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL 将一个字段内用逗号分隔的内容分成多条记录
阅读量:6731 次
发布时间:2019-06-25

本文共 1457 字,大约阅读时间需要 4 分钟。

---恢复内容开始---

本文转

由于业务需求,我们可能会把一串以分割符字符串数据放到一个字段,如我们在客户端处理拆分是很简单的,不过这样做效果不太好,怎么用SQL SERVER 2008 来解决这件事件哪?

 

--参考 
 拆分表: 
  
 --> --> (Roy)生成測試數據 
   
 
if not object_id(
'
Tab
'
is 
null 
     drop table Tab 
 Go 
 Create table Tab([Col1] 
int,[COl2] nvarchar(
5)) 
 Insert Tab 
 
select 
1,N
'
a,b,c
' union all 
 
select 
2,N
'
d,e
' union all 
 
select 
3,N
'
f
' 
 Go 
  
 SQL2000用辅助表: 
 
if object_id(
'
Tempdb..#Num
'
is not 
null 
     drop table #Num 
 go 
 
select top 
100 ID=Identity(
int,
1,
1) into #Num 
from syscolumns a,syscolumns b 
 Select  
     a.Col1,COl2=substring(a.Col2,b.ID,charindex(
'
,
',a.Col2+
'
,
',b.ID)-b.ID)  
 
from  
     Tab a,#Num b 
 
where 
     charindex(
'
,
',
'
,
'+a.Col2,b.ID)=b.ID --也可用 substring(
'
,
'+a.COl2,b.ID,
1)=
'
,
' 
  
  
 SQL2005用Xml: 
  
 
select  
     a.COl1,b.Col2 
 
from  
     (
select Col1,COl2=convert(xml,
'
 <root> <v>
'+replace(COl2,
'
,
',
'
 </v> <v>
')+
'
 </v> </root>
'
from Tab)a 
 outer apply 
     (
select Col2=C.v.value(
'
.
',
'
nvarchar(100)
'
from a.COl2.nodes(
'
/root/v
')C(v))b 
  
  
 SQL05用CTE: 
  
 ;with roy 
as  
 (
select Col1,COl2=cast(left(Col2,charindex(
'
,
',Col2+
'
,
')-
1
as nvarchar(
100)),Split=cast(stuff(COl2+
'
,
',
1,charindex(
'
,
',Col2+
'
,
'),
''
as nvarchar(
100)) 
from Tab 
 union all 
 
select Col1,COl2=cast(left(Split,charindex(
'
,
',Split)-
1
as nvarchar(
100)),Split= cast(stuff(Split,
1,charindex(
'
,
',Split),
''
as nvarchar(
100)) 
from Roy 
where split>
'' 
 ) 
 
select COl1,COl2 
from roy order by COl1 option (MAXRECURSION 
0
  
 生成结果: 
 
/*
 
 Col1        COl2 
 ----------- ----- 
 1           a 
 1           b 
 1           c 
 2           d 
 2           e 
 3           f 
 
*/ 
  

 

转载地址:http://ncfqo.baihongyu.com/

你可能感兴趣的文章
JavaScript 实现
查看>>
EasyUI中dialog中嵌入form细节问题记录
查看>>
python结合pyvmomi 监控esxi的磁盘等信息
查看>>
【C++】const成员函数
查看>>
devenv.exe 应用程序错误
查看>>
词法分析实验报告-201506110151-董广枢
查看>>
【NDK开发】android-ndk r10环境搭建
查看>>
smartUpload上传文件组件
查看>>
Android系统移植与调试之------->build.prop文件详细赏析
查看>>
SOUI更新到2.0
查看>>
网站速度与性能优化要抓主要矛盾解决—瓶颈法
查看>>
clientX,clientY,pageX,pageY,screenX,screenY
查看>>
条件编译
查看>>
Linux命令——mesg
查看>>
Argus
查看>>
自定义UIButton
查看>>
C#函数(四)
查看>>
[日记]游长白遇梅花,植物大战僵尸
查看>>
[激励机制]浅谈内部竞争——如何让你的员工玩命干活?
查看>>
【working_out】时间线
查看>>