关于#Oracle#的问题,如何解决?

一、Oracle 中有如下一张表,地区信息表 area_info

img

二、需求是提取不含省名(内蒙古、辽宁、江苏)的数据,已知解决方案如下

select * from area_info a
    where a.area_name not like '内蒙古%'
    and a.area_name not like '辽宁%'
    and a.area_name not like '江苏%'

四、需求

缩减命令长度,把 and 中的条件合并在 where 中,可以用哪个函数来实现?!

    select *
      from area_info
     where not regexp_like(area_name, '^(内蒙古|辽宁|江苏)')

img

   select *  from area_info a where  substr2( a.area_name ,0,2) not in ('内蒙','辽宁','江苏');

hive函数 like是通配符,rlike是正则表达式,而且你应该用or,不能用and把。and是并且的意思,or是或者的意思。看你数据,如果用and那么你出来没数据
select * from area_info a
where a.area_name not rlike '内蒙古|辽宁|江苏'