跨多行拆分可变长度分隔的字符串(SQL)
发布时间:2020-12-12 16:25:27 所属栏目:MsSql教程 来源:网络整理
导读:我有一个表,在一列中包含一个可变长度分隔的字符串,例如: 20,5,^24,^26,^ 281,^34,2,^48,^44,^20,10,^ 20,^379,1,^32,^71,^ 我需要做的是拆分此字符串,以便在新行上返回^字符后面的每个数字.喜欢: Item Number Item Code Item1 20 Item2 ^24 Item3 ^24 Item
我有一个表,在一列中包含一个可变长度分隔的字符串,例如:
我需要做的是拆分此字符串,以便在新行上返回^字符后面的每个数字.喜欢:
我已经尝试了各种拆分函数,我可以设法通过将多个列中的值子串到子列然后使用unpivot将它们返回到多行来实现我需要的结果,但是这个方法不会处理这个字符串的可变长度. 任何更好的方法的想法? 解决方法首先,我要说的是,这就是你首先在字段中没有逗号分隔数据的原因.没有简单有效的方法可以使用它.也就是说,您可以使用递归查询来拆分字符串并从中获取数字: with split as ( select item = cast('' as varchar(max)),source = cast('20,^281,^' as varchar(max)) union all select item = substring(source,charindex(',',source)),source = substring(source,source) + 2,10000) from split where source > '' ) select substring(item,item) -1) from split where item > '' 结果: 20 ^24 ^26 ^281 ^34 ^48 ^44 ^20 ^20 ^379 ^26 ^32 ^71 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sqlserver 查看表所占磁盘空间
- 动刀EFOracleProvider,使其支持char、timestamp(x)等类型
- Linq to SQL或Entity Framework for Enterprise ASP.NET MV
- SqlServer存储过程及函数
- sql-server-2005 – 如何停止并重新启动sql server 2005?
- sql-server – SSIS存储过程使用Temp Table 2008和2014
- SQLServer : EXEC和sp_executesql的区别
- SQL Server 2016 行级别权限控制
- sql – 如何编辑表以启用CASCADE DELETE?
- sql-server – SQL Server Management Studio架构视图