先用正则表达式去掉了工号,然后再用位置匹配去掉了花名,语句如下
SELECT case when position('-' in REGEXP_REPLACE(user_name , '\-[0-9]+' , '')) > 0 then split_part(REGEXP_REPLACE(user_name , '\-[0-9]+' , '') , '-',2) else REGEXP_REPLACE(user_name , '\-[0-9]+' , '') end as user_name FROM TABLE
-- REGEXP_REPLACE(user_name , '\-[0-9]+' , '') 去除工号及其前面的‘-’
-- position('-' in REGEXP_REPLACE(user_name , '\-[0-9]+' , '')) > 0 判断去除工号后用户名是否有‘-’,即判断该员工是否有花名
--split_part(REGEXP_REPLACE(user_name , '\-[0-9]+' , '') , '-',2) 如果有花名,则取‘-’后面的,为员工姓名