sql根据/分隔并计算和
时间: 2024-10-21 21:13:49 浏览: 20
在SQL中,如果你想要根据某个特定字符(如逗号、分号等)分割字符串,并对分割后的结果进行计算,可以使用`STRING_SPLIT()`函数(如果数据库支持这个函数,比如SQL Server 2016及以上版本),或者自定义一些逻辑,例如使用`PATINDEX()`和`SUBSTRING()`函数。
例如,假设有一个名为`Items`的字段,存储以逗号分隔的商品列表,你可以这样做:
```sql
SELECT
SUM(CAST(SUBSTRING(Items, number + 1, PATINDEX(',', Items) - number - 1) AS INT)) AS TotalPerCategory,
SUBSTRING(Items, 1, PATINDEX(',', Items)) AS Category
FROM
(
SELECT
value,
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) as number
FROM
(
SELECT
LTRIM(RTRIM(value)) as value
FROM
STRING_SPLIT(Items, ',')
) s
) t
WHERE
value IS NOT NULL
GROUP BY
Category;
```
这里首先将商品列表按逗号分割成一个个单独的项,然后对每个类别求和。`ROW_NUMBER()`函数用于获取每个分割出来的值的位置,然后通过`SUBSTRING()`和`PATINDEX()`计算出每个商品的数值部分。
注意这取决于具体的数据库系统,不是所有SQL方言都提供相同的函数。如果是MySQL或其他不支持`STRING_SPLIT`的数据库,可能需要其他方式处理字符串分割。
阅读全文