sql - SQL 中的字符串剪切

标签 sql regex database oracle substring

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

'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)

我们需要 @^ 之间的字符,特别是 YESNO

我该怎么做?

最佳答案

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

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/

相关文章:

java - 如何从Java中的String中获取多个子字符串和额外的数字?

sql - 'likes' 或 'endorsements' 的数据库结构

php - 使用 PHP Access MS Access 数据库的最佳方式是什么?

c# - DacPac 在导出或导入时排除用户和登录名

javascript - 用于 Javascript/JSON 的 ORM

mysql - SQL Select 将行数据分散到列

mysql - SQL 中自动更新外键

c# - 在 SELECT IN 中使用 Oracle 参数的问题

c# - 从 HTML 字符串中删除所有内联样式和(大多数)类

java - 如何拆分字符串,只保留某些分隔符?