sql查询从varchar2列获取类似字符串模式的所有出现的行方式输出

时间:2017-12-15 05:37:19

标签: oracle

oracle varchar列可以在同一列中包含多次出现的值,如"N.S. Code 123" , "N S Code 678" , "N S Codes 567" , "N.S.Code 345"等。需要输出的SQL查询为:

678
567
345
...

1 个答案:

答案 0 :(得分:0)

您可以使用REGEXP_SUBSTRCONNECT BY

注意:模式\d{3}"搜索正好3位数的数字。但是,如果您的数字有不同的数字,则可以使用\d+

另外,目前还不清楚你的字符串中是否包含这两个字符:"N S Code""N S Codes"。否则,我可以包括以正则表达式模式来容纳它。

WITH t (str)
     AS (SELECT '"N.S. Code 123" , "N S Code 678" , "N S Codes 567" , "N.S.Code  345"'
           FROM DUAL)
    SELECT REGEXP_SUBSTR (str,
                          '(\d{3})"',
                          1,
                          LEVEL,
                          NULL,
                          1)
      FROM t
CONNECT BY LEVEL <= REGEXP_COUNT (str, '(\d{3})"');