首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server -对列中的逗号分隔值求和

问SQL Server -对列中的逗号分隔值求和
EN

Stack Overflow用户
提问于 2010-04-11 23:31:18
回答 2查看 5.2K关注 0票数 1

数据库中有一列包含逗号分隔值,如:0.0012.45,14.33等。

我需要在存储过程中对其求和。我能想到的一种方法是使用函数将其拆分并转换为表,然后对其求和。

还有其他想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-11 23:44:56

使用Sql Server 2005+ CTE可以创建递归select,如下所示

代码语言:javascript
复制
DECLARE @Table TABLE(
        ID INT,
        Vals VARCHAR(100)
)

INSERT INTO @Table SELECT 1, '0.00,12.45,14.33'
INSERT INTO @Table SELECT 2, '1,2,3,4'

;WITH ValList AS(
        SELECT  ID,
                CAST(LEFT(Vals,PATINDEX('%,%', Vals) - 1) AS FLOAT) Val,
                RIGHT(Vals,LEN(Vals) - PATINDEX('%,%', Vals)) Remainder
        FROM    @Table
        UNION ALL
        SELECT  ID,
                CAST(LEFT(Remainder,CASE WHEN PATINDEX('%,%', Remainder) = 0 THEN LEN(Remainder) ELSE PATINDEX('%,%', Remainder) - 1 END) AS FLOAT) Val,
                RIGHT(Remainder,CASE WHEN PATINDEX('%,%', Remainder) = 0 THEN 0 ELSE LEN(Remainder) - PATINDEX('%,%', Remainder) END) Remainder
        FROM    ValList
        WHERE   LEN(Remainder) > 0

)
SELECT  ID,
        SUM(Val)
FROM    ValList
GROUP BY ID

输出

代码语言:javascript
复制
ID          Total
----------- ----------------------
1           26.78
2           10
票数 4
EN

Stack Overflow用户

发布于 2010-04-11 23:43:59

在一个函数中,你可以尝试这样的东西,完全不确定它是否会工作!

代码语言:javascript
复制
CREATE FUNCTION ufn_sum_csv(@string varchar(100))
RETURNS @result int
AS BEGIN
EXEC 'SELECT @result = ' + REPLACE(@string,',','+')
RETURN

不能在这台电脑上试用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2617538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档