歡迎關注原創公衆号:
在實際工作中,是否會遇到有如下的需求:
于是乎:
一個FUNCTION搞定了,前端程式在使用的時候,直接使用該函數即可。
函數的定義如下:
CREATE OR REPLACE FUNCTION DATA_PLUS(id_num IN varchar2) RETURN varchar2 IS
new_id varchar2(20);
BEGIN
IF length(id_num) >= 15 THEN
-- 身份證号碼類的,保留前三後四位
new_id := replace(id_num, substr(id_num, 4, length(id_num) - 7), '***');
ELSIF length(id_num) = 9 THEN
-- 護照号碼類的,保留前二後三位
new_id := replace(id_num, substr(id_num, 3, length(id_num) - 5), '***');
ELSIF length(id_num) = 11 THEN
-- 手機号碼類的,保留前三後二位
new_id := replace(id_num, substr(id_num, 4, length(id_num) - 5), '***');
ELSE
new_id := id_num;
END IF;
RETURN new_id;
END;
其實mysql下會很簡單一些:應用INSERT+LENGTH倆函數即可。
SELECT
'370285198812120433',
INSERT (
'370285198812120433',
4,
LENGTH('370285198812120433') - 7,
'***'
) AS col1,
'E19881212',
INSERT (
'E19881212',
3,
LENGTH('E19881212') - 5,
'***'
) AS col2,
'18562607972',
INSERT (
'18562607972',
4,
LENGTH('18562607972') - 5,
'***'
) AS col3;