mysql 分割后所有值相加
时间: 2023-07-05 14:14:47 浏览: 104
可以使用 MySQL 的字符串函数和数值函数来实现将一个字符串字段中的数字分割出来并求和的操作。比如,假设有一个表格 `table1`,其中包含一个名为 `numbers` 的字段,其值为类似于 `1,2,3,4,5` 的字符串,可以使用以下 SQL 语句来实现所有数字的求和操作:
```
SELECT SUM(CAST(SUBSTRING_INDEX(numbers, ',', n) AS UNSIGNED)) AS sum_of_numbers
FROM table1
CROSS JOIN (
SELECT 1 + units.i + tens.i * 10 AS n
FROM (
SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) AS units
CROSS JOIN (
SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) AS tens
) AS numbers_split
WHERE n <= 1 + LENGTH(numbers) - LENGTH(REPLACE(numbers, ',', ''));
```
这个 SQL 语句使用了 `SUBSTRING_INDEX` 函数来将原始字符串按照逗号 `,` 分割,然后使用 `CAST` 函数将分割出来的字符串转换为无符号整数。由于分割出来的数字的个数是不确定的,因此需要使用一个子查询来生成一个数字序列,然后使用 `CROSS JOIN` 来将其与原始表格结合起来,从而实现对所有数字的求和操作。
阅读全文