如何从字符串中查找数字?

时间:2019-06-09 23:37:33

标签: sql regex snowflake

我需要从文本字段中提取一个数字。tect字段不一致。

我尝试编写子字符串,但是由于文本不一致,因此无法正常工作。

CASE WHEN position ( 'CNTRL ', ACTVY_NOTE_TXT) > 0 
            THEN  SUBSTRING ( ACTVY_NOTE_TXT,position ( 'RECORD ID   ', ACTVY_NOTE_TXT)+6, position ( ' [', ACTVY_NOTE_TXT) -  position ( 'RECORD ID   ', ACTVY_NOTE_TXT) -6)
        ELSE NULL END  as DisputeID,

输入

RCVD 2019-05-06 BOR DISPUTED VIA MAIL- - STATES VICTIM OF IDENTITY THEFT SENT 10030 LIDB LETTER -FRANK CHICK - 525 STELLAR CT 525 - KODAK TN 37764 - -STEP FAILED- CBR DISPUTE CODED IN LAST 6 MONTHS-C106 05 15 2019 13:33:42 MWZ    OPEN ACCT DISPUTE RECORD ID   999703 [PJR748:5 21 2019 12:00:00 AM]

输出应为

999703

2 个答案:

答案 0 :(得分:0)

如果我们想要的数字始终在右边带有[,我们将在表达式中使用它:

([0-9]+)(?:\s+)?\[

Demo 1

,我们想要的号码在该捕获组中:

([0-9]+)

如果它可能总是有6位数字,我们可以用一个量词更新表达式:

([0-9]{6})(?:\s+)?\[

Demo 2

如果我们的输入字符串中没有其他6位数字,我们可以简单地使用:

([0-9]{6})

Demo 3

实施

对于雪花,如果我们希望应用表达式,this link可能会有所帮助。

答案 1 :(得分:0)

您可以简单地使用

\d+(?=\s*\[)
  • \d+-匹配一个或多个数字
  • (?=\s*\[)-正向搜索,匹配后跟space(可选)和[(必须)

Demo