SQL:解析和求和存储为varchar的关联数组

时间:2016-06-23 16:58:38

标签: sql sql-server parsing sql-server-2012 associative-array

我有一个SQL表,以这种方式将关联数组存储为varchar:"JOE11,BOB7,CORY3,DAVID2"。键是alpha,值是数字,对用逗号分隔。这似乎是一种存储这些信息的愚蠢方式,但我目前无法做任何事情。我需要计算数组值的总和(11 + 7 + 3 + 2 = 23,在本例中),然后在多个记录中对该计算求和。

任何建议都很可爱。

1 个答案:

答案 0 :(得分:1)

有点

Select sum(cast(substring(t2.value,patindex('%[0-9]%',t2.value),20) as int))
from t
cross apply STRING_SPLIT (t.col , ',')  t2 -- sql 2016

如果您使用的是较低版本,请找到Jeff Moden的DelimitedSplit8k() 就在这里,例如, Multiple group split string in SQL