尝试使用SQL解析字符串,但没有在线找到任何解决方案(很抱歉,也许我在寻找错误的东西)。
我有一个字符串字段,其中包含一系列我需要提取和求和的数字。分隔符为“ \ r \ n”。
示例:“ \ r \ n-1234 somenumbersandtext123 \ r \ n -5678 sometextmorenumbers123'
因此,在此示例中,我想将1234和5678相加。
字符串的长度都是不同的,我最终需要对字符串中的数字求和。字符串详细信息文档绑定到一个项目,数字代表文件的大小(试图确定每个项目的文件总大小)。
谢谢您的指导。
答案 0 :(得分:2)
您可以使用
regexp_matches(col,'(?:^|\n)\s*-\s*(\d*\.?\d+)','g')
用(...)
捕获的部分将是regexp_matches
函数的输出。
详细信息
(?:^|\n)
-字符串或换行符的开头\s*-\s*
-包含0+空格的连字符(\d*\.?\d+)
-捕获组1(将返回的内容):
\d*
-0位数以上\.?
-1或0个点\d+
-1个以上的数字。答案 1 :(得分:1)
这似乎可行:
SELECT
REGEXP_MATCHES(
string::text
,'\Br\Bn ?- ?([0-9]+)',
'g')
from test_table