You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询:当Codes列包含指定数组值时聚合Total求和

解决方案

你的问题在于Codes是逗号分隔的字符串列,直接用= ANY('5','7')会判断整个字符串是否等于'5'或'7',无法匹配包含这些值的行(比如第三行的'5,7')。以下是不同数据库下的正确查询语句:

MySQL/MariaDB

使用FIND_IN_SET函数(专门用于检查值是否在逗号分隔的字符串中):

SELECT SUM(Total) AS sum_total
FROM your_table
WHERE FIND_IN_SET('5', Codes) > 0 OR FIND_IN_SET('7', Codes) > 0;

也可以用正则表达式(避免匹配类似'15'这种包含目标值的字符串):

SELECT SUM(Total) AS sum_total
FROM your_table
WHERE Codes REGEXP '(^|,)5(,|$)' OR Codes REGEXP '(^|,)7(,|$)';

PostgreSQL

将字符串转为数组后,用数组交集操作符&&判断是否存在目标值:

SELECT SUM(Total) AS sum_total
FROM your_table
WHERE string_to_array(Codes, ',') && ARRAY['5', '7'];

或者用ANY操作符配合数组转换:

SELECT SUM(Total) AS sum_total
FROM your_table
WHERE '5' = ANY(string_to_array(Codes, ',')) OR '7' = ANY(string_to_array(Codes, ','));

SQL Server

通过STRING_SPLIT拆分字符串后,检查是否存在目标值:

SELECT SUM(Total) AS sum_total
FROM your_table
WHERE EXISTS (
    SELECT 1
    FROM STRING_SPLIT(Codes, ',')
    WHERE value IN ('5', '7')
);

以上语句都会返回预期的求和结果14。

内容的提问来源于stack exchange,提问作者bloomingrose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:21:01