如何从列中提取特定的字符串

时间:2019-06-04 17:18:08

标签: sql oracle regexp-substr

我正在尝试提取一个以'A0'开头的特定字符串,并将表中一列的其余9个值返回给字符串A0。我需要在表格的索赔说明栏中提取身份验证号码。

我正在尝试使用regexp_substr函数。我想在表的clm_notes列中提取任何以'A0'开头的字符串。

SELECT 
regexp_substr(CLM_NOTES, '[^A0]+', 1,1) as auth_num
FROM claims_table

这是表格中列的外观

Clm_notes column 
New Auth from auth - A071869573

我想要的期望结果是提取以'A0'开头的字符串

A071869573

2 个答案:

答案 0 :(得分:1)

您将需要以下内容:

SELECT 
regexp_substr(CLM_NOTES, 'A0.*$', 1,1) as auth_num
FROM claims_table

或者如果A0之后的所有字符都是数字:

SELECT 
regexp_substr(CLM_NOTES, 'A0[0-9]*$', 1,1) as auth_num
FROM claims_table

另一种更快的方法可能是:

SELECT 
substr(CLM_NOTES, instr(CLM_NOTES,'A0')) as auth_num
FROM claims_table

答案 1 :(得分:0)

匹配您不需要的内容,而不是匹配您想要的内容并将其删除:

select
    regexp_replace(CLM_NOTES, '.*- A0', 'A0') as auth_num
from claims_table

这将匹配'- A0'之前和包括'A0'的所有内容,并将其替换为'A0',从而有效地删除<asp:UpdateProgress ID="upCargando" runat="server" AssociatedUpdatePanelID="uppAgrupar"> <ProgressTemplate> <div class="progress"> <div class="indeterminate" style="width: 100%"></div> </div> </ProgressTemplate> </asp:UpdateProgress> 之前的所有内容。