SELECT replace(replace(regexp_replace(regexp_replace(emp_nm,'\\s+',''),',','、'),'?',''),'\\s+','') as emp_nm, --去除emp_nm的空格,问号以及将逗号转为顿号
grp_emp_unif_id,
CASE WHEN mobl_num like '+86%' and length(mobl_num)='14' then mobl_num --+86的手机号后面还有11位数字表示正常可用(目前未加数字的判断,只判断了长度且没有去除空格做判断-----此处是否还需要判断+86之后的第一位为1,以及全数字)
WHEN mobl_num like '+852%' and length(mobl_num)='12' THEN mobl_num --+852后面还需有8位数字表示正常可用(目前未加数字的判断,只判断了长度且没有去除空格做判断----此处是否还需要判断+852之后是否全数字)
when (substr(regexp_replace(mobl_num,'\\s+',''),0,1)='1' and length(regexp_replace(mobl_num,'\\s+',''))='11') and mobl_num not like '%-%' --手机号1开头的,并且长度为11位的数字表示正常可用,并且11位中不能包含1-1-xxx形式的,该形式的是加拿大手机号。(该处判断的不够严谨,应该修改为1开头的,且长度为11位的只有数字)
then regexp_replace(mobl_num,'\\s+','')
ELSE ''
end mobl_num,
CASE WHEN replace(emp_eml,'?','') like '%@%' THEN replace(replace(emp_eml,'?',''),'\\s+','') ----邮箱格式为xx@xx即可,并去除问号(excel转csv的时候产生的)
ELSE ''
end emp_eml,
CASE WHEN belg_grp_dept_id='' THEN belg_grp_org_id
ELSE belg_grp_dept_id
end belg_grp_dept_id,
replace(regexp_replace(regexp_replace(curr_postn,',','、'),',','、'),'?','') as curr_postn, ---职级去除全角和半角的逗号以及问号
CASE WHEN gender_cd='1' THEN '男'
WHEN gender_cd='2' THEN '女'
ELSE gender_cd
end gender_cd, ---代码1为男,2为女,其它的未判断(此处应把其它的置为空,以免出现不正常的东西)
'' as is_leader,
CASE WHEN ordr_num='' and
(postn_lvl_cd='101' or postn_lvl_cd='102' or postn_lvl_cd='103' or postn_lvl_cd='201' or postn_lvl_cd='202' or postn_lvl_cd='203' or postn_lvl_cd='301' or postn_lvl_cd='302' or postn_lvl_cd='303')
and
(length(regexp_extract(in_corp_dt,'^\\d{4}\\d{2}\\d{2}$',0)) >1) then concat(postn_lvl_cd,in_corp_dt) --在排序字段为空的前提下,需要先按照职级代码判断,101-303为正常的职级代码,然后入司时间时间的格式需要符合yyyymmdd格式才能连接组成一个排序字段
ELSE ordr_num --此处应该增加一个判断,需要判断这个字段都是数字才能用
end ordr_num,
'' as eng_name,
case WHEN (replace(replace(replace(replace(work_tel,'?',''),'(',''),')',''),'\\s+','') like '0%' or replace(replace(replace(replace(work_tel,'?',''),'(',''),')',''),'\\s+','') like '1%' )
and (replace(replace(replace(replace(work_tel,'?',''),'(',''),')',''),'\\s+','') regexp '[^0-9.\\-]'=0 )
then replace(replace(replace(replace(work_tel,'?',''),'(',''),')',''),'\\s+','') --在0或者1开头的前提下,字段中只包含数字和-才可以作为正常使用的字段,把左右两边的括号以及excel转csv的时候产生的问号去掉了
else ''
end work_tel,
'' as disadble,
'' as passwd
from dh_dws.emp_base WHERE corp_cd !='0200000000'
and (duty_stat_cd ='1' or duty_stat_cd='7' or duty_stat_cd='8') ---在职状态为1、7、8的时候才能被查询出来
;