我需要使用 SQL 从以下字符串中仅提取
YES
或 NO
:
'5^hgf^A^6^YES@1^g' 'H^jfd^k^i^NO@2^ojg'
到目前为止我尝试过这个正则表达式:
Regexp(column_name,[^^|],1,4)
我们需要
@
和 ^
之间的字符,特别是 YES
和 NO
。
我该怎么做?
如果真实数据确实看起来像您发布的示例数据,那么它就是您要查找的第五个“单词”。在这种情况下,这可能会做:
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 个 ^
字符和 @
看看小提琴。