首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制regexp_like中的字符数

限制regexp_like中的字符数
EN

Stack Overflow用户
提问于 2019-09-19 17:19:07
回答 1查看 374关注 0票数 0

我正在挖掘诸如在家分娩、在家分娩等术语的文本字段。我下面的代码主要是工作的。然而,我如何限制字符的数量来限制我可能得到的假阳性的数量?

我想要的是第1行和第2行,但不是第3行。我希望将regexp_like语句中的字符数限制在10或20个,这样我就可以在家传递或传递。

代码语言:javascript
复制
with test (id, col) as
  (select 1, 'abc 3/4/16 blah blah home  delivery'                          from dual union all
   select 2, 'abc 3/4/16 blah blah 3/7/16 delivery at home xxx cc2'         from dual union all
   select 3, 'xxx 3/5/18 delivery 234 imp happened on 5/8/19 sent home 23f' from dual union all
   select 4, '3/10/18 bla bla imp-3/9/17 xfe 334 3/4/13 x'                  from dual
  )
select * from test 
where     regexp_like(col,'(home|deliver).*(deliv|birth|home)') ;

谢谢-

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-19 22:55:32

如果你对得到的比赛和表现感到满意,

您可以限制home|deliver组和deliv|birth|home组之间的插入字符的长度,方法是用长度限制的任意字符匹配器替换无界.*

可以指定字符串中中间字符的允许最大长度和最小长度.

下面是一个示例,允许组之间的字符数为0- 30。

代码语言:javascript
复制
WITH TEST (ID , COL) AS
    (SELECT 1, 'abc 3/4/16 blah blah home  delivery' FROM DUAL UNION ALL
     SELECT 2, 'abc 3/4/16 blah blah 3/7/16 delivery at home xxx cc2' FROM DUAL UNION ALL
     SELECT 3, 'xxx 3/5/18 delivery 234 imp happened on 5/8/19 sent home 23f' FROM DUAL UNION ALL
     SELECT 4, '3/10/18 bla bla imp-3/9/17 xfe 334 3/4/13 x' FROM DUAL)
SELECT *
FROM TEST
WHERE REGEXP_LIKE(COL , '(home|deliver).{0,30}(deliv|birth|home)');

结果:

代码语言:javascript
复制
   ID                                                     COL
_____ _______________________________________________________
    1 abc 3/4/16 blah blah home  delivery
    2 abc 3/4/16 blah blah 3/7/16 delivery at home xxx cc2


2 rows selected.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58016060

复制
相关文章

相似问题

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