1、业务场景
实际业务开发需要模拟用户11位手机号,数据库如何快速生成随机不重复号码?
2、知识前提
11位手机号码参考百度说明:
3、实现方案
SQLServer编写函数,生成随机11位测试用手机号,只考虑MAC段,前三位符合手机号码段规范。
函数GetRandPhoneNum入参说明:
@operator表示号段;
@seed表示随机种子,固定newid()
具体sql语句:
--sqlserver生成11位测试用随机手机号GetRandPhoneNum
if exists(select 1 from sysobjects where id=OBJECT_ID('GetRandPhoneNum'))
drop function GetRandPhoneNum
go
create function GetRandPhoneNum(@operator nvarchar(50)='0',@seed nvarchar(36))
returns nvarchar(11)
as
begin
--@operator:0-随机,1-中国电信号段,2-中国联通号段,3-中国移动号段,4-中国广电号段
--@seed:固定传入newid(),函数不支持newid和rand
declare @phongNum nvarchar(11)--随机手机号码
declare @operatorStart nvarchar(3)--3位运营商号码段
declare @randNum nvarchar