如何从字符串中剪切特定数字并在 select mysql 中对其进行操作

How cut specifics number from string and operate on them in select mysql

我的字段中有如下所示的数据:

SR01-20, MA-5

我想把一直在“-”号后面的数字分开,然后求和。不知何故 select 它们,转换为数字并相加。

这个例子的结果应该是:

25

您可以使用 substring_index() 和转换:

select sum(substring_index(col, '-', -1) + 0)

+ 0 进行静默转换。所以如果连字符后面的部分不是数字,那么它将被转换为零并且不会发出错误。

Here 是 SQL Fiddle 显示结果。

你可以试试这个:

select substring_index(substring_index(col,',',1),'-',-1) +  
    substring_index(substring_index(col,',',2),'-',-1) as result
from table_name;

并且,您可以添加 +0substring_index 的结果转换为数字。

更新:

首先,您必须将 col 拆分为 "," 作为分隔符。然后 SUM()GROUP BY 的值。 您可以试试这个 sql 查询:

SELECT id,sum(substring_index(spl,'-',-1)) sa from
(
    SELECT id,SUBSTRING_INDEX(SUBSTRING_INDEX(e.col, ',', n.n), ',', -1) spl
        FROM table_name e CROSS JOIN 
    (
         SELECT a.N + b.N * 10 + 1 n
             FROM 
            (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
         ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
            ORDER BY n
    ) n
     WHERE n.n <= 1 + (LENGTH(e.col) - LENGTH(REPLACE(e.col, ',', '')))
     ORDER BY id, col
) t
group by id

我不知道你的 table 结构,但我希望你明白我在那个查询中的意思。