oracleSQLlike多个条件使⽤正则表达式
语法:
REGEXP_LIKE ( expression, pattern [, match_parameter ] )
⽤法:
select * from table where
REGEXP_LIKE(字段名, '(匹配串1|匹配串2|...)') ;//全模糊匹配
select * from table where
regexp likeREGEXP_LIKE(字段名, '^(匹配串1|匹配串2|...)') ;//右模糊匹配(开头)
select * from table where
REGEXP_LIKE(字段名, '(匹配串1|匹配串2|...)$') ;//左模糊匹配 (结尾)
实际sql⽤法:
表达式可为sql
regexp_like(字段名, (select * from dual))
regexp_substr('01000000,02000000', '[^,]+', 1, level)  可以将'01000000,02000000' 拆分 为 '01000000', '02000000'
select  name, count(bh) value
from 表名 t
where 1=1
and
(
regexp_like(字段名,
(select '^('|| dm || ')' from (
select listagg(substr(dm,0, dj),  '|') within group(order by dm)  dm from
(
select
dm,
(case
when substr(dm, 3, 8) = '000000' then 2
when substr(dm, 5, 8) = '0000' then 4
when substr(dm, 7, 8) = '00' then 6
else 8 end) dj
from
(
select regexp_substr('01000000,02000000', '[^,]+', 1, level) dm  from dual
connect by regexp_substr('01000000,02000000', '[^,]+', 1, level) > 0
)
)
)
)
)
)
and sj >= to_date('2020-01-08 00:00:00', 'yyyy-MM-dd hh24:mi:ss')
and sj <= to_date('2020-01-08 23:59:59', 'yyyy-MM-dd  hh24:mi:ss')
说明:
参数
expression - 字符表达式,例如列或字段。它可以是VARCHAR2,CHAR,NVARCHAR2,NCHAR,CLOB或NCLOB数据类型。
pattern - 正则表达式匹配信息。它可以是以下的组合:
值描述
^匹配字符串的开头。如果使⽤match_parameter为'm',它匹配表达式中任意位置的⼀⾏的开始。
$匹配字符串的结尾。如果使⽤match_parameter为'm',它匹配表达式中任意位置的⼀⾏的结尾。
*匹配零个或多个匹配项。
+匹配⼀个或多个匹配项。
匹配零或⼀次出现。
.匹配除NULL之外的任何字符。
使⽤像“OR”⼀样指定多个替代。
[]⽤于指定要在其中尝试匹配列表中任何⼀个字符的匹配列表。
[^]⽤于指定⼀个不匹配列表,要尝试匹配除列表中的字符之外的任何字符。
()⽤于将表达式分组为⼦表达式。
{m}匹配m次
{m,}匹配⾄少m次。
{m,n}匹配⾄少m次,但不超过n次。
\n n是1和9之间的数字。匹配在遇到\n之前在()中到的第n个⼦表达式。
[..]匹配⼀个可以是多个字符的排序规则元素。
[::]匹配字符类。
[==]匹配等价类。
\d匹配数字字符。
\D匹配⾮数字字符。
\w匹配字字符。
\W匹配⾮字符字符。
\s匹配空格字符。
\S匹配⾮空格字符。
\A匹配字符串的开头或匹配在换⾏符之前的字符串的结尾。
\Z匹配字符串的结尾。
*?与前前⾯的模式匹配零个或多个匹配项。
+?匹配前⾯⼀个模式⼀次或多次。
匹配前⾯⼀个模式零或⼀个发⽣。
{n}?匹配前⾯的模式n次。
{n,}?与前⼀个模式匹配⾄少n次。
{n,m}?与前⼀个模式匹配⾄少n次,但不超过m次。
match_parameter - 可选的。它允许修改REGEXP_LIKE条件的匹配⾏为。它可以是以下的组合:
值描述
'c'执⾏区分⼤⼩写匹配。
'i'执⾏不区分⼤⼩写的匹配。
'n'允许句点字符(.)与换⾏符匹配。 默认情况下,句点是通配符。
'm'表达式假定有多个⾏,其中^是⾏的开始,$是⾏的结尾,不管表达式中这些字符的位置如何。默认情况下,表达式假定为单⾏。'x'忽略空格字符。默认情况下,空格字符与任何其他字符⼀样匹配。
注意
REGEXP_LIKE条件使⽤输⼊字符集来计算字符串。
如果指定match_parameter值冲突,则REGEXP_LIKE条件将使⽤最后⼀个值来中断冲突。
如果省略match_parameter,则REGEXP_LIKE条件将使⽤由NLS_SORT参数确定的区分⼤⼩写。
另请参见Oracle 。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。