怎样拆分成两列,多行数据。第一次用SQLserver

image.png

SELECT A.ID as "巡检计划ID", A.QrcodeUserds FROM [dbo].[QrcodeJob]

1726739683902.png

有逗号的情况下,将逗号去掉,一行的情况下,变为多行

SQL 超级无敌小熊蛋 发布于 2024-9-19 17:37 (编辑于 2024-9-19 17:55)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
超级无敌小熊蛋Lv5初级互助
发布于2024-9-19 20:12

我这个版本的sqlserver是2008版本的。所以使用楼下的方法不太行,我使用的是帆软的函数。如下:image.png

  • Chazzen Chazzen 很强
    2024-09-20 08:49 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2024-9-19 17:39(编辑于 2024-9-19 17:56)

--如果tb表存在就删除

if object_id('tb') is not null drop table tb 

go 

--创建tb表

create table tb([编号] varchar(3),[产品] varchar(2),[数量] int,[单价] int,[金额] int,[序列号] varchar(8)) 

--往tb表插入测试数据

insert into tb([编号],[产品],[数量],[单价],[金额],[序列号]) 

select '001','AA',3,5,15,'12,13,14' union all

select '002','BB',8,9,13,'22,23,24'

go 

--按逗号拆分 序列号 字段

select [编号],[产品],[数量],[单价],[金额] 

,substring([序列号],b.number,charindex(',',[序列号]+',',b.number)-b.number) as [序列号] 

from tb a with(nolock),master..spt_values b with(nolock) 

where b.number>=1 and b.number<len(a.[序列号]) and b.type='P'

and substring(','+[序列号],number,1)=','

go 

--删除 参数表 tb

drop table tb 

go 

最佳回答
0
ChazzenLv2初级互助
发布于2024-9-19 17:53(编辑于 2024-9-19 18:01)

SELECT 

   a .*

,b.value AS 拆分字段

FROM 

     表名  a

CROSS APPLY STRING_SPLIT(a.待拆分字段, ',') AS b

image.png

最佳回答
0
CD20160914Lv8专家互助
发布于2024-9-19 18:04

检查你的sql server版本是2016及以上吗?要大于等于2016才可以用这个函数的

  • 2关注人数
  • 254浏览人数
  • 最后回答于:2024-9-19 20:12
    请选择关闭问题的原因
    确定 取消
    返回顶部