如何将11位电话号码转换为10位VNPT,否则在SQL中

时间:2018-08-13 17:43:37

标签: sql

如何将11位数的电话号码切换为10位数 下面是SQL过程中的简短代码

创建1个表配置

CREATE TABLE [dbo].[PhoneNumberConfig] (
    [PhoneNoInput]      VARCHAR (15)   NULL,
    [PhoneNoOutput]     VARCHAR (15)   NULL,
    [Description]       NVARCHAR (150) NULL
);


--MobiFone
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('070','0120',N'Đầu số 0120 chuyển đổi thành 070');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('079','0121',N'Đầu số 0121 chuyển đổi thành 079');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('077','0122',N'Đầu số 0122 chuyển đổi thành 077');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('076','0126',N'Đầu số 0126 chuyển đổi thành 076');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('078','0128',N'Đầu số 0128 chuyển đổi thành 078');
----VinaPhone
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('083','0123',N'Đầu số 0123 chuyển đổi thành 083');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('084','0124',N'Đầu số 0124 chuyển đổi thành 084');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('085','0125',N'Đầu số 0125 chuyển đổi thành 085');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('081','0127',N'Đầu số 0127 chuyển đổi thành 081');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('082','0129',N'Đầu số 0129 chuyển đổi thành 082');
-----Viettel
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('032','0162',N'Đầu số 0162 chuyển đổi thành 032');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('033','0163',N'Đầu số 0163 chuyển đổi thành 033');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('034','0164',N'Đầu số 0164 chuyển đổi thành 034');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('035','0165',N'Đầu số 0165 chuyển đổi thành 035');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('036','0166',N'Đầu số 0166 chuyển đổi thành 036');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('037','0167',N'Đầu số 0167 chuyển đổi thành 037');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('038','0168',N'Đầu số 0168 chuyển đổi thành 038');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('039','0169',N'Đầu số 0169 chuyển đổi thành 039');
---Vietnamobile
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('056','0186',N'Đầu số 0186 chuyển đổi thành 056');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('058','0188',N'Đầu số 0188 chuyển đổi thành 058');
--Gmobile
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('059','0199',N'Đầu số 0199 chuyển đổi thành 059');
INSERT INTO PhoneNumberConfig(PhoneNoInput,PhoneNoOutput,Description)
VALUES('067','099',N'Đầu số 0992 chuyển đổi thành 0672');

功能将11位数的电话号码切换为10位数,否则将

create function dbo.GetPhoneNumber(@phoneNumber varchar(15))
    returns varchar(15)
AS begin
    declare     @prefix992          varchar(15),
                @prefix             varchar(15),
                @suffix             varchar(15),            
                @phoneNumberOut     varchar(15);

    --get prefix phoneNo
    set @prefix             = left(@phoneNumber, 3);
    set @prefix992          = left(@phoneNumber, 4);
    set @suffix             = replace(@phoneNumber, @prefix, '');

    if(len(@phoneNumber)=10)
    begin
        select @phoneNumberOut = PhoneNoOutput + @suffix from [PhoneNumberConfig] where (PhoneNoInput = @prefix OR PhoneNoInput+'2' = @prefix992)

        if(@phoneNumberOut is null Or @phoneNumberOut = '')
            select @phoneNumberOut = PhoneNoInput + @suffix from [PhoneNumberConfig] where (PhoneNoOutput = @prefix OR PhoneNoOutput + '2' = @prefix992)
    end
    else
    begin
        --resets
        set @prefix             = left(@phoneNumber, 4);
        set @suffix             = replace(@phoneNumber, @prefix, '');
        select @phoneNumberOut = PhoneNoInput + @suffix from [PhoneNumberConfig] where PhoneNoOutput = @prefix
    end

    return @phoneNumberOut;
end

0 个答案:

没有答案