SQL SERVER 中将数据表中的字段按分隔符分成多行多列

snlixing 2023-02-21 16:30:33

图一:

图二:

 

 如何将数据表中的content字段分割成多行

 

...全文
132 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 2023-02-22
  • 打赏
  • 举报
回复

--测试数据
if not object_id(N'Tempdb..#T') is null
    drop table #T
Go
Create table #T([id] int,[name] nvarchar(22),[content] nvarchar(29))
Insert #T
select 1,N'张三',N'电脑,打印机,手机' union all
select 2,N'李四',N'电脑,手机'
Go
--测试数据结束
Select id,name,value from #T CROSS APPLY(SELECT * FROM STRING_SPLIT(#T.content,','))t

snlixing 2023-02-22
  • 举报
回复
@二月十六 sql server 2014 提示对象名 'STRING_SPLIT' 无效。
二月十六 版主 2023-02-22
  • 打赏
  • 举报
回复

img

二月十六 版主 2023-02-22
  • 打赏
  • 举报
回复

--测试数据
if not object_id(N'Tempdb..#T') is null
    drop table #T
Go
Create table #T([id] int,[name] nvarchar(22),[content] nvarchar(29))
Insert #T
select 1,N'张三',N'电脑,打印机,手机' union all
select 2,N'李四',N'电脑,手机'
Go
--测试数据结束
Select id,name,value from #T CROSS APPLY(SELECT * FROM STRING_SPLIT(#T.content,','))t

猫狸嘎 2023-02-21
  • 打赏
  • 举报
回复

--建立数据
create table test21(id int,name nvarchar(50),content nvarchar(max))
insert into test21 values(1,'张三','电脑,打印机,手机'),(2,'李四','电脑,手机'),(3,'王五','')

--建立自定义函数
CREATE function [dbo].[Split]  
(  
 @SourceSql varchar(max),  
 @StrSeprate varchar(10)  
)  
returns @temp table(value varchar(200))  
as   
begin  
    declare @i int  
    set @SourceSql=rtrim(ltrim(@SourceSql))  
    set @i=charindex(@StrSeprate,@SourceSql)  
    while @i>=1  
    begin  
        insert @temp values(left(@SourceSql,@i-1))  
        set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)  
        set @i=charindex(@StrSeprate,@SourceSql)  
    end  
    if @SourceSql<>''   
       insert @temp values(@SourceSql)  
    return   
end

--查询
select a1.id,a1.name,T1.value as content2 from test21 as a1 
outer apply(select value from Split(a1.content,',')) T1

img

34,567

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧