我在谷歌上搜索了一下,找不到regexp_substr的解决方案。
select *
from customer
where lower (comment) like '%m%g';
在评论中可以包含任何可能的句子,想象一下,偏头痛下一步是试图找到拿起这个词在新的列
我想具体这个词的任何相关的%imm%g%或%im%g%在小或大或混合字母像移民输出,移民(是的,它可以是一个错字),移民,移民
select a.*,
regexp_susbtr (comment, '.mmig+\w*|.mig+\w*') as selected
from customer a
where lower (comment) like %imm%g%'
or lower (comment) like %im%g%;
regexp_susbtr (comment,'.mmig+\w*|.mig+\w*'
<<=只拾取小写字母,什么是正确的编码,拾取任何小,大或混合字母where regexp_like(comment, 'immig|imig','i')
<<=如果我是对的,这是类似于下面,不是吗?
where lower (comment) like %immig%'
or lower (comment) like %imig%;
下一个问题;
什么是%
的替代方法,以查找regexp_substr
和regexp_like
之间的任何字母m
和g
我正在使用Oracle SQL,感谢您的帮助
2条答案
按热度按时间nwnhqdif1#
regexp_susbtr (comment,'.mmig+\w*|.mig+\w*'
<<=只拾取小写字母,什么是正确的编码,拾取任何小,大或混合字母请参阅
REGEXP_SUBSTR
文档...
match_param
参数记录为:match_param
是数据类型为VARCHAR2
或CHAR
的字符表达式,允许您更改函数的默认匹配行为。match_param的值可以包含以下一个或多个字符:
'i'
指定不区分大小写的匹配,即使条件的确定排序规则是区分大小写的。因此,您需要:
其中:
\w*mig\w*
将匹配零个或多个(尽可能多的)单词字符,然后是子字符串mig
,然后是零个或多个(尽可能多的)单词字符,'i'
匹配参数使匹配不区分大小写。'im\w*?g'
匹配子串im
,然后匹配零个或多个单词字符(尽可能少),然后匹配g
子串,'i'
匹配参数使匹配不区分大小写。什么是
%
的替代方法,以查找regexp_substr
和regexp_like
之间的任何字母m
和g
如果你想要单词字符
a
到z
和0
到9
在任何情况下和_
下划线,那么使用类似Perl的\w
模式。如果你只需要字母字符,那么使用POSIX字符类
[[:alpha:]]
或[a-zA-Z]
或[a-z]
,不区分大小写。对于字母字符:
或:
5n0oy7gb2#
这是一种选择;看看有没有用
一些样本数据:
查询方式: