sql server 字段拆分

zhangfengyi 2020-11-17 01:57:59
sql server 数据库name字段值为张三,李四,王五....现在希望把他们按逗号拆分成不同的列,该怎样处理
...全文
568 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_291778271 2020-11-18
  • 打赏
  • 举报
回复
2016添加了函数string_split,可以进行字段分割
zhangfengyi 2020-11-18
  • 打赏
  • 举报
回复
看来只有更换数据库版本了,网上找了一个拆分函数,一次对一条数据拆分是可以的,如果想对整个表中所有记录的字段拆分,还没有好的办法,循环的方式是否可以

select * from [dbo].[SPLIT] (
(select distinct(key4) as key1 from news where key4<>'' and key4 like '%,%' and newsid='0001')
,',')



ALTER FUNCTION [dbo].[SPLIT](@SourceSql VARCHAR(max),@StrSeprate NVARCHAR(10))
RETURNS @temp TABLE(sl NVARCHAR(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
INSERT @temp VALUES(@SourceSql)
RETURN
END
wwfxgm 2020-11-17
  • 打赏
  • 举报
回复
用 string_split是最方便的。
zhangfengyi 2020-11-17
  • 打赏
  • 举报
回复
引用 5 楼 二月十六 的回复:
会有
张干、李四、王五、赵六、什么七

这样的超过3个的数据吗?

有,有超过3个的数据,具体数量不确定
二月十六 版主 2020-11-17
  • 打赏
  • 举报
回复
会有 张干、李四、王五、赵六、什么七 这样的超过3个的数据吗?
zhangfengyi 2020-11-17
  • 打赏
  • 举报
回复
引用 2 楼 卖水果的net 的回复:
请给出示例数据,和预期结果。


如图,数据库有key1,key2,key3,key4,四个字段,key4以逗号分隔,拆分后与前三个字段内容一并显示出来
lich2005 2020-11-17
  • 打赏
  • 举报
回复
用 STRING_SPLIT 函数。 -- SELECT VALUE FROM uname CROSS APPLY STRING_SPLIT([name], ',')
卖水果的net 版主 2020-11-17
  • 打赏
  • 举报
回复
请给出示例数据,和预期结果。
二月十六 版主 2020-11-17
  • 打赏
  • 举报
回复
有多少列是动态的吗?每一列都动态一个名字?

34,838

社区成员

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

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