我有这个查询
Select Distinct EMPLOYEE_ID from TABLE
如果此人的ID以000开头,那么这会返回一堆带有前导零的员工ID,那么它应该是一个' e'如果它是00那么它应该是一个' u'
所以,例如,如果我有
0041258这应该在结果中显示为u41258,如果我有的话
00041258那么这应该显示为e41258
有没有办法以更有效的方式修剪和替换使用substr和Case语句?如果没有,请告诉我如何在这种情况下使用substr和Case语句
答案 0 :(得分:0)
好吧,你可以使用case
:
select (case when employee_id like '000%' then 'e' || substr(employee_id, 4)
when employee_id like '00%' then 'u' || substr(employee_id, 3)
else employee_id
end)
我怀疑有一种比这更有效的方法。
答案 1 :(得分:0)
使用嵌套正则表达式的选项:
SQL> with test (id) as
2 (select '0041258' from dual union
3 select '00041258' from dual
4 )
5 select id,
6 regexp_replace(regexp_replace(id, '^000', 'e'), '^00', 'u') result
7 from test;
ID RESULT
-------- --------------------
00041258 e41258
0041258 u41258
SQL>
答案 2 :(得分:0)
假设您需要编写update
语句(以永久更改ID):
update <table>
set employee_id = case when employee_id like '000%'
then 'e' || substr(employee_id, 4)
else 'u' || substr(employee_id, 3) end
where employee_id like '00%'
;