SQL 中的字符串切割

问题描述 投票:0回答:1

我需要使用 SQL 从以下字符串中仅提取

YES
NO

'5^hgf^A^6^YES@1^g'
'H^jfd^k^i^NO@2^ojg'

到目前为止我尝试过这个正则表达式:

Regexp(column_name,[^^|],1,4)

我们需要

@
^
之间的字符,特别是
YES
NO

我该怎么做?

sql regex database oracle substring
1个回答
0
投票

如果真实数据确实看起来像您发布的示例数据,那么它就是您要查找的第五个“单词”。在这种情况下,这可能会做:

with test (col) as 
  (select '5^hgf^A^6^YES@1^g' from dual union all
   select 'H^jfd^k^i^NO@2^ojg' from dual
  )
select col,
  regexp_substr(col, '\w+', 1, 5) result_1,
  substr(col, instr(col, '^', 1, 4) + 1,
              instr(col, '@') - instr(col, '^', 1, 4) - 1
        ) result_2
from test;
  • result_1
    使用正则表达式,看起来更漂亮
  • result_2
    使用
    substr + instr
    组合,提取第 4 个
    ^
    字符和
    @
  • 之间的字符串

看看小提琴

© www.soinside.com 2019 - 2024. All rights reserved.