Plsql Regexp_like在case语句中无法正常工作(在Oracle PL/Sql中)
下面Oracle中的case语句在标志列中仅为所有记录提供“Others”,尽管其他条件满足Plsql Regexp_like在case语句中无法正常工作(在Oracle PL/Sql中),plsql,Plsql,下面Oracle中的case语句在标志列中仅为所有记录提供“Others”,尽管其他条件满足 create table pca_title2 as (select executive_id,title, case when regexp_like (title,'^Sales$','i') then 'Sales' when regexp_like (title,'^Ecommerce$','i') then 'Ecommerce' when regexp_
create table pca_title2 as
(select executive_id,title,
case
when regexp_like (title,'^Sales$','i') then 'Sales'
when regexp_like (title,'^Ecommerce$','i') then 'Ecommerce'
when regexp_like (title,'^E-commerce$','i') then 'E-commerce'
when regexp_like (title,'^optimization$','i') then 'optimization'
when regexp_like (title,'^optimisation$','i') then 'optimisation'
when regexp_like (title,'^optimise$','i') then 'optimise'
when regexp_like (title,'^optimize$','i') then 'optimize'
when regexp_like (title,'^Online.Cust.experience$','i') then 'Online.Cust.experience'
when regexp_like (title,'^UX$','c') then 'UX'
when regexp_like (title,'^user Experience$','i') then 'user Experience'
when regexp_like (title,'^operations$','i') then 'operations'
when regexp_like (title,'^GM$','c') then 'GM'
when regexp_like (title,'^Executive Director$','i') then 'Executive Director'
when regexp_like (title,'^Executive Chairman$','i') then 'Executive Chairman'
when regexp_like (title,'^Chief Officer$','i') then 'Chief Officer'
when regexp_like (title,'^General Manager$','i') then 'General Manager'
when regexp_like (title,'^Chair$','i') then 'Chair'
when regexp_like (title,'^Advisor$','i') then 'Advisor'
when regexp_like (title,'^Overseers$','i') then 'Overseers'
when regexp_like (title,'^Board Member $','i') then 'Board Member '
when regexp_like (title,'^Member of Board$','i') then 'Member of Board'
when regexp_like (title,'^Chief Operating Officer$','i') then 'Chief Operating Officer'
when regexp_like (title,'^COO$','c') then 'COO'
else 'others'
end as flag
from pca);
我想说正则表达式是按规定工作的。但是,您没有提供任何数据。很可能你的正则表达式不是为了捕捉你想要的东西而编写的。看起来您正在查找的匹配项的标题是这些字符串中的任意一个(大部分不区分大小写)。因此,它不会匹配任何包含前后文本的内容
Chair - match
Chairs - no match
GM - match
GMC - no match
等等。很可能您的regexp工作正常,但不是您认为它应该工作的方式。你没有给我们看任何数据,所以我们不能确定 因为您使用锚定
^$
所有regexp只匹配精确的字符串,并且因为您有i
选项,所以匹配不区分大小写。这意味着您的数据中没有字符串SALES
,但可能有SALES X
下面是两个示例A和B。示例A是示例的简化版本。然而,它可能不会做你想做的,但希望它能让你知道你可能做错了什么。示例B向您展示了如何匹配(不区分大小写)任何具有子字符串sales
的字符串
with
x(id, title) as (
select 1, 'Sales' from dual union all
select 2, 'Ecommerce' from dual union all
select 3, 'Online.Cust.experience' from dual union all
select 4, 'user Experience' from dual union all
select 5, 'Sales with postfix' from dual union all
select 6, 'Something else' from dual
)
select 'A' as example, id, title
,case
when lower(title) in ('sales', 'ecommerce', 'online.cust.experience') then title
else q'[It's something else]'
end as flag
from x
union all
select 'B' as example, id, title
,case
when regexp_like (title, 'Sales', 'i') then 'Sales'
else q'[It's something else]'
end as flag
from x;