微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 SQL Sever 中获取 CSV 中所有值的 SUM?

如何解决如何在 SQL Sever 中获取 CSV 中所有值的 SUM?

我有一个 CSV,我想获取其中所有值的总和,但找不到好的解决方案。

我想尝试像下面这样的 STRING_SPLIT,但它需要 compatibility level 130,而我的 sql Server 是 120。我无法更改兼容性级别。

DECLARE @csv VARCHAR(MAX) = '1,2,3,4,5';
SELECT SUM(*) FROM STRING_SPLIT(@csv,','); --It should return 15

sql Server 详细信息:

Microsoft sql Server 2019 (RTM-CU9) (KB5000642) - 15.0.4102.2 (X64)
2021 年 1 月 25 日 20:16:12 版权所有 (C) 2019 Microsoft Corporation Windows Server 2019 Datacenter 10.0 上的开发人员版(64 位) (内部版本 17763:)(管理程序)

解决方法

功能:

CREATE FUNCTION [dbo].[STRING_SPLIT]
(
    @string VARCHAR(MAX),@separator VARCHAR
)
RETURNS @returnList TABLE ([value] INT) 
AS
BEGIN
    DECLARE @location INT
    WHILE (CHARINDEX(@separator,@string,0) > 0)
    BEGIN
            SET @location =   CHARINDEX(@separator,0) 
            
            INSERT INTO   @returnList
            SELECT CAST(RTRIM(LTRIM(SUBSTRING(@string,@location))) AS INT)

            SET @string = STUFF(@string,1,@location,'') 
    END
    INSERT INTO @returnList
    SELECT CAST(RTRIM(LTRIM(@string)) AS INT)
    RETURN
END

使用:

DECLARE @csv VARCHAR(MAX) = '1,2,3,4,5';
SELECT SUM(value) FROM dbo.STRING_SPLIT(@csv,',');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。