Sql 获取列中部分值的总和

Sql 获取列中部分值的总和,sql,oracle,Sql,Oracle,假设有一个表tableA col1 col2 1 some random string and number 1213 aa5 string aaasome number 2 some random string 432682 aa3 test 1 aa7 我需要得到如下结果 1 12 2 3 按col1分组,结果为5+7(“aa”字符串后的部分整数) 为了使问题更加清晰,col2还有一些其他字符串。。像测试aa2一样,再次测试测试23u45 ajsdk 483

假设有一个表
tableA

col1 col2

1    some random string and number 1213 aa5 string aaasome number
2    some random string 432682 aa3 test
1    aa7
我需要得到如下结果

1   12
2    3
按col1分组,结果为5+7(“aa”字符串后的部分整数)


为了使问题更加清晰,col2还有一些其他字符串。。像测试aa2一样,再次测试测试23u45 ajsdk 4834。在这里,我需要单独选择2个


请对此提出解决方案

您需要去掉前缀,转换为数字,然后求和。一种方法如下所示:

select col1, sum(cast(replace(col2, 'aa', '') as number)
from tablea a
group by col1;

可以使用正则表达式从字符串中获取所需的数字:

Select col1, sum(regexp_replace(col2,'(^|.*\s)aa(\d+)(\s.*|$)', '\2'))
From t
Group by col1

为什么数据是这样存储的?总是两个字符吗?@Prdp这是一个旧数据,我们现在需要它。它总是一个相同的字符串(不是aa,我刚才提到的那样),后跟一个整数。。类似于
再次测试aa2测试23u45 ajsdk 4834..
。这里我需要单独选择2个。@user3763227-但是你的问题不能解释这种情况,这不好。然后你应该问另一个问题,并给出更好的解释。@user3763227更新了答案。请立即尝试获取错误,错误为
错误:01722 DBD::Oracle::st fetchall\u arrayref失败:ORA-01722:无效数字(DBD错误:OCISMTFETCH)[for Statement
@user3763227…非常模糊,没有帮助。我收到了这个错误..很抱歉没有提及..错误:01722 DBD::Oracle::st fetchall_arrayref失败:ORA-01722:无效数字(DBD错误:OCISMTFETCH)[forStatement@user3763227…列中的值不是“aa”.是的,我还有其他价值观