我正在寻找一个t-sql函数来获取类似的字符串:
A:B,C:d,E:F
并将其转换为类似
的表格ID Value
a b
c d
e f
我在互联网上找到的任何内容都包含单列解析(例如XMLSplit函数变体),但没有一个让我用两个分隔符来描述我的字符串,一个用于列分离&行隔离的另一个。
你能指导我这个问题吗?我有一个非常有限的t-sql知识,不能分叉那些读取函数来获得两列解决方案吗?
答案 0 :(得分:1)
您可以在网络上找到split()
功能。然后,你可以做字符串逻辑:
select left(val, charindex(':', val)) as col1,
substring(val, charindex(':', val) + 1, len(val)) as col2
from dbo.split(@str, ';') s(val);
答案 1 :(得分:1)
您可以使用自定义SQL拆分功能来分隔数据值列 这是您可以在开发系统上使用的sql split function 它返回一个ID值,有助于将id和value保持在一起
您需要拆分两次,首先使用“,”然后使用“;”进行第二次拆分字符
declare @str nvarchar(100) = 'a:b,c:d,e:f'
select
id = max(id),
value = max(value)
from (
select
rowid,
id = case when id = 1 then val else null end,
value = case when id = 2 then val else null end
from (
select
s.id rowid, t.id, t.val
from (
select * from dbo.Split(@str, ',')
) s
cross apply dbo.Split(s.val, ':') t
) k
) m group by rowid