我需要使用 SQL 从以下字符串中仅提取 YES
或 NO
:
'5^hgf^A^6^YES@1^g' 'H^jfd^k^i^NO@2^ojg'
So far I tried this regex:
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 个^
字符和@
之间的字符串
看看 fiddle .
关于sql - SQL 中的字符串剪切,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77417735/