oracle小筆記
select CASE WHEN ASCIISTR(name) LIKE '%\%' AND LENGTH(name) = 2 THEN '*' || SUBSTR(name, -1) --脫敏姓名中文2個漢字 WHEN ASCIISTR(name) LIKE '%\%' AND LENGTH(name) > 2 THEN SUBSTR(name, 1, 1) || SUBSTR('***************************', 1, LENGTH(SUBSTR(name, 2, LENGTH(name) - 2))) || SUBSTR(name, -1) --脫敏姓名中文大于2個漢字 WHEN ASCIISTR(name) NOT LIKE '%\%' AND name NOT LIKE '% %' THEN SUBSTR(name, 1, 1) || SUBSTR('***************************', 1, LENGTH(SUBSTR(name, 2, LENGTH(name) - 2))) --脫敏姓名英文(J*********(JohnWilson)) WHEN ASCIISTR(name) NOT LIKE '%\%' AND REGEXP_COUNT(name, ' ') = 1 THEN SUBSTR(name, 1, 1) || SUBSTR('***************************', 1, LENGTH(SUBSTR(name, 2, INSTR(name, ' ') - 1))) || SUBSTR(name, LENGTH(SUBSTR(name, 2, INSTR(name, ' ')))) --脫敏姓名英文(M****** Jackson(Micheal Jackson)) WHEN ASCIISTR(name) NOT LIKE '%\%' AND REGEXP_COUNT(name, ' ') = 2 THEN SUBSTR(name, 1, 1) || SUBSTR('***************************', 1, LENGTH(SUBSTR(name, 2, INSTR(name, ' '))) - 1) || SUBSTR(name, LENGTH(SUBSTR(name, 2, INSTR(name, ' ') - 1)) + 1, 2) || SUBSTR('***************************', LENGTH(SUBSTR(name, 2, INSTR(name, ' ') + 2)), LENGTH(SUBSTR(name, 2, INSTR(name, ' ', 1, 2))) - LENGTH(SUBSTR(name, 2, INSTR(name, ' ') + 2))) || SUBSTR(name, LENGTH(SUBSTR(name, 2, INSTR(name, ' ', 1, 2)))) --脫敏姓名英文 G***** W***** Bush(George Walker Bush) ELSE SUBSTR(name, 1, 1) || '***********' END AS CUST_NAME from dual;
本文來自博客園,作者:diablo-427,轉載請注明原文鏈接:http://www.rzrgm.cn/diablo-427/p/17188093.html

浙公網安備 33010602011771號