如何更改此查询以获得更好的增强?

时间:2015-10-15 13:33:48

标签: sql oracle10g

如何修改此查询以获得更好的增强功能?

select * from employee
where emp_id like '0%'
  and emp_id not like '00%'
  or emp_id like '1%'   
  or emp_id = '999';

我希望员工的所有详细信息都与emp_id类似,例如' 0xxxxxxx' ,' 1xxxxxx',999但不喜欢' 00xxxxxx'。

1 个答案:

答案 0 :(得分:0)

您可以使用oracle 10g中引入的regexp_like函数。

您的陈述最终可能如下所示

select *
from (select '1xxxxx' d from dual union
      select '0xxxxx' d from dual union
      select '00xxxx' d from dual union
      select '999'    d from dual union
      select '9999'   d from dual union
      select '555'    d from dual union
      select '5xxxxx' d from dual)
where regexp_like(d, '(^0[^0]|^1)|^999$');

|的行为类似于或者它的内容类似,以0开头,后跟不0或以1或等于999开头