天天看點

資料庫運維管理系列之關于資料庫脫敏和資料庫加密的小技巧

歡迎關注原創公衆号:

在實際工作中,是否會遇到有如下的需求:

資料庫運維管理系列之關于資料庫脫敏和資料庫加密的小技巧

于是乎:

資料庫運維管理系列之關于資料庫脫敏和資料庫加密的小技巧

一個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;