如何修改此查询以获得更好的增强功能?
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'。
答案 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开头