123456789101112131415161718192021222324252627282930313233343536373839 |
- -- 字符脱敏处理
- SET GLOBAL log_bin_trust_function_creators = 1;
- CREATE
- FUNCTION text_mask(text varchar(100), head_len int, tail_len int)
- RETURNS varchar(100)
- BEGIN
- DECLARE t_len, m_len, mid_len int;
- DECLARE ret varchar(100);
- SET t_len = LENGTH(text);
-
- IF t_len = 0 THEN
- SET ret = '';
- ELSEIF t_len = 1 THEN
- SET ret = text;
- ELSEIF t_len = 2 THEN
- SET ret = CONCAT(LEFT(text, 1), '*');
- ELSE
- SET m_len = head_len + tail_len;
-
- IF m_len < t_len THEN
- SET ret = CONCAT(LEFT(text, head_len), REPEAT('*', t_len - m_len), RIGHT(text, tail_len));
- ELSEIF m_len = t_len THEN
- SET ret = CONCAT(LEFT(text, CASE WHEN head_len > 0 THEN head_len - 1 ELSE head_len END), '*', RIGHT(text, CASE WHEN head_len > 0 AND tail_len > 0 THEN tail_len ELSE tail_len - 1 END));
- ELSEIF head_len > t_len THEN
- SET ret = CONCAT(LEFT(text, t_len - 1), '*');
- ELSEIF tail_len > t_len THEN
- SET ret = CONCAT('*', RIGHT(text, t_len - 1));
- ELSE
- SET mid_len = CEIL(t_len / 2);
- SET ret = CONCAT(LEFT(text, mid_len - 1), REPEAT('*', t_len - (mid_len - 1) * 2), RIGHT(text, mid_len - 1));
- END IF;
- END IF;
-
- RETURN ret;
- END;
- SET GLOBAL log_bin_trust_function_creators = 0;
|