一个屏蔽部分电话号码的函数

来源:互联网 发布:物流软件功能 编辑:程序博客网 时间:2024/05/20 21:59
根据输入的号码分情况隐藏部分(4位)号码,包括3位区号固话、4位区号固话、手机号等;可以选择隐藏中间或尾部的号码。源代码如下:
CREATE OR REPLACE FUNCTION fn_telnumber_mask (
    p_telnumber IN VARCHAR2,
    p_flag IN INT -- 0 隐藏中间;1 隐藏尾部
)
    RETURN VARCHAR2
IS
BEGIN
    IF p_flag = 0
    THEN
        IF SUBSTR (p_telnumber, 1, 1) = '0' -- 固话
        THEN
            IF LENGTH (p_telnumber) = 11 -- 三位区号
            THEN
                IF SUBSTR (p_telnumber, 1, 3) IN
                      ('020',
                       '021',
                       '022',
                       '023',
                       '024',
                       '025',
                       '026',
                       '027',
                       '028',
                       '029',
                       '010'
                      )
                THEN
                    RETURN REPLACE (p_telnumber,SUBSTR (p_telnumber, 4, 4),'****');
                ELSE -- 四位区号
                    RETURN REPLACE (p_telnumber,SUBSTR (p_telnumber, 5, 4),'****');
                END IF;
            ELSE
                RETURN REPLACE (p_telnumber, SUBSTR (p_telnumber, 5, 4), '****');
            END IF;
        ELSE -- 手机号
            RETURN REPLACE (p_telnumber, SUBSTR (p_telnumber, 4, 4), '****');
        END IF;
    ELSE -- 隐藏末4位;
        RETURN REPLACE (p_telnumber, SUBSTR (p_telnumber, -4, 4), '****');
    END IF;
END fn_telnumber_mask;
/
 
原创粉丝点击