首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle的SQL将文本拆分成行并进行过滤

Oracle的SQL将文本拆分成行并进行过滤
EN

Stack Overflow用户
提问于 2019-06-12 01:04:19
回答 1查看 81关注 0票数 1

我将多行文本数据存储在表行中,就像这里的这个模拟示例。其中一些行被标记为“重要”,我正在尝试选择所有“重要”行以及相应ID的列表。

代码语言:javascript
复制
 select 10001 as id, 'some random text 11
 more random text IMPORTANT 12
 more random text IMPORTANT 13' as str
   from dual
  union all
 select 10002, 'other random text 21
 other random text IMPORTANT 22
 other random text 23'
   from dual;

我需要这样的东西..。

代码语言:javascript
复制
id      important text
10001   more random text IMPORTANT 12
10001   more random text IMPORTANT 13
10002   other random text IMPORTANT 22

我希望在没有任何临时表或游标的单个SELECT中执行此操作,并且我一直在使用connect by查询查看regexp_substr,但似乎遇到了问题。您的帮助我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-12 01:20:19

你可以这样做..。不完全确定外部查询中的WHERE条件,您可以根据需要进行调整(我允许IMPORTANT以任何大写形式出现,并且我不要求它是一个单词-例如,它可能是单词“不重要”的一部分,您必须解决它),但我相信这不是您询问的主要问题。“主要问题”在子查询中得到了真正解决。

当然,WITH子句不是解决方案( SELECT查询)的一部分;它只是为了提供测试数据。

阅读“m”修饰符(用于“多行”)-它允许^和$在每行文本的开始和结束处匹配,而不是默认的(即整个字符串的开始和结束,而不考虑换行符)。

代码语言:javascript
复制
with
  test_data as (
     select 10001 as id, 'some random text 11
more random text IMPORTANT 12
more random text IMPORTANT 13' as str
   from dual
  union all
 select 10002, 'other random text 21
other random text IMPORTANT 22
other random text 23'
   from dual
)
select *
from   (
         select     id, regexp_substr(str, '^.*$', 1, level, 'm') as str_line
         from       test_data
         connect by level <= regexp_count(str, '^.*$', 1, 'm')
                and prior id =  id
                and prior sys_guid() is not null
       )
where upper(str_line) like '%IMPORTANT%'   -- modify this as needed
;

   ID  STR_LINE                        
-----  --------------------------------
10001  more random text IMPORTANT 12   
10001  more random text IMPORTANT 13   
10002  other random text IMPORTANT 22 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56548606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档