【SQLServer】函数生成随机手机号

MSSQL数据查询 --1.查询出姓名为“陈鹏”的学号、手机号码和邮箱地址Select SNO AS '学号',MobileNO AS '手机号码',StuEMail AS '邮箱地址'From StudentWhere SName='陈鹏' --2.查询出姓名不是“陈鹏”的学生的所有信息Select SNO AS '学号', SName AS '姓名', Sage As '年龄', Sex AS '性别', Mo... 阅读详情

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(8)--8位随机数
	declare @size int--号段数组大小
	declare @rand int--号段数组索引	
	declare @operatorTemp nvarchar(1000)--号段数组
	declare @operatorDianxin nvarchar(1000)='133、149、153、173、177、180、181、189、190、191、193、199、'--中国电信号段
	declare @operatorLianTong nvarchar(1000)='130、131、132、145、155、156、166、167、171、175、176、185、186、196、'--中国联通号段
	declare @operatorYiDong nvarchar(1000)='134、135、136、137、138、139、144、147、148、150、151、152、157、158、159、172、178、182、183、184、187、188、195、197、198、'--中国移动号段
	declare @operatorGuangDian nvarchar(1000)='192、'--中国广电号段
	declare @operatorAll nvarchar(1000)=@operatorDianxin+@operatorLianTong+@operatorYiDong+@operatorGuangDian--全号段

	if(@operator='1')
	begin
		set @operatorTemp=@operatorDianxin
	end
	else if(@operator='2')
	begin
		set @operatorTemp=@operatorLianTong
	end
	else if(@operator='3')
	begin
		set @operatorTemp=@operatorYiDong
	end
	else if(@operator='4')
	begin
		set @operatorTemp=@operatorGuangDian
	end
	else
	begin
		set @operatorTemp=@operatorAll
	end

	set @randNum=RIGHT(100000000 + CONVERT(bigint, ABS(CHECKSUM(@seed))), 8)
	set @size=len(@operatorTemp)/4	
	set @rand=@randNum%@size
	set @operatorStart=SUBSTRING(@operatorTemp,@rand*4+1,3)		
	set @phongNum=@operatorStart+@randNum
	
	return @phongNum
end
go

4、测试

测试用sql语句:

--测试
select dbo.GetRandPhoneNum(1,newid())--1-中国电信号段
select dbo.GetRandPhoneNum(2,newid())--2-中国联通号段
select dbo.GetRandPhoneNum(3,newid())--3-中国移动号段
select dbo.GetRandPhoneNum(4,newid())--4-中国广电号段
select dbo.GetRandPhoneNum(0,newid())--0-随机
select dbo.GetRandPhoneNum(default,newid())--0-随机

测试结果:
1-中国电信号段
1-中国电信号段
2-中国联通号段
2-中国联通号段
3-中国移动号段
3-中国移动号段
4-中国广电号段
4-中国广电号段
0-随机
0-随机

5、参考链接

1、SQL Server生成随机手机号
2、Sqlserver产生不重复随机数
3、SQLServer随机数的获取
4、sqlserver数据库中随机生成N位的随机数
5、在SQL SErver中实现数组功能
6、SQLServer函数支持默认参数吗?
7、百度百科:手机号码

手机号码归属地sql(mysql,SQLServer)两个版本 手机号码归属地sql(mysql,SQLServer)两个版本 insert into app_mobile_attribute_info VALUES (1,"1300000","山东","济南","中国联通","0531","250000" ),(2,"1300001","江苏","常州","中国联通","0519","213000" ),(3,"1300002","安徽","巢湖","中国联通","0565","238000" ) 立即下载

相关推荐

【Python爬虫案例教学】超简洁代码采集原神所有角色信息

(。・∀・)ノ゙嗨 大家好,这里是池鱼

xiaoyuan_____的博客 2422

Mysql小技巧

mysql技巧--生成随机的手机号码 、查询表结构及字段备注、脚本代码

JohnGene的博客 1695

无人机+消防车:高楼灭火系统技术详解

传统的消防设备,如登高车、车载水枪、水炮和高喷车,在50米以上高度的火源面前往往力不从心,100米以上高层火灾则更加依赖消防员“爬楼”灭火,效率低下且风险极高。消防水带:采用聚乙烯丝材质,超轻、耐腐蚀、强度高,能够携带大量水或灭火泡沫进行高空喷水灭火作业。“无人机+消防车”高楼灭火系统主要由消防车和无人机两部分组成,通过机车联动实现高效灭火。高效灭火:无人机能够快速到达高层建筑顶部或指定位置进行灭火作业,大大提高了灭火效率。空压泡沫系统:配备超大水箱,支持长时间供应灭火泡沫,满足无人机灭火剂的需求。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1673

数据库实现自动生成电话号码_sqlserver

使用sqlserver实现11位手机号码的生成,为了避免重复,使用了系统时间,和rand函数结合实现 环境是sqlserver2008,2008以上版本都适用。 代码如下: create proc proc_randTel @RandTel char(11) output as declare @r numeric(15,15),@tempR varchar(11) select @r=rand(datepart(mm,getdate())*100000+datepart(ss,getdate())*10

weixin_44222438的博客 1538

如何实现电路级别的CDM ESD防护

采用先进制程的CMOS工艺,可能具有比以前更薄的栅极氧化物和更大的芯片尺寸,大的衬底可能积累大量的电荷,导致CDM事件期间的高ESD放电峰值电流。传统CDM保护器件使用栅极接地NMOS被添加到输入级的栅极。然而,这种方法通常会在信号路径上引入显著的寄生电容,这不适合RF应用。

weixin_42693135的博客 2504

YOLOv8改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用

本文记录的是利用优化的目标检测方法研究。深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks及其改进的实现代码如下: 四、创新模块 4.1 改进点⭐ 模块改进方法:直接加入(第五节讲解添加步骤)。模块加入如下:模块改进方法:基于的(第五节讲解添加步骤)。第二种改进方法是对中的进行改进,并将

Limiiiing的博客 1016

sqlserver如何快速生成不重复的随机数据

/*1. 如何生成8位随机数,生成的数越随机,重复的可能性当然越小 2. 控制不重复 3. 考虑性能 针对这个问题,我写了如下的示例来解决,希望能为有这类需求的人提供指导 */ USE tempdb GO –创建测试表 CREATE TABLE tb(id char(8)) –创建用于自动过滤重复值的唯一索引 CREATE UNIQUE INDEX IX_tb...

Susan_qwe的博客 6589

【Java开发者必看】LangChain4j实战指南:使用AIService轻松集成聊天记忆Chat Memory到SpringBoot应用,通过封装多轮复杂对话,使聊天记忆的实现变得简单

聊天记忆是指在与用户的多轮对话过程中,能够记住之前的交互内容,从而提供更加连贯和个性化的回复。LangChain4j支持通过ChatMemoryProvider接口实现聊天记忆功能。

Spring Boot-Common On With You 448

SQL SERVER 2005 正则匹配手机号的函数写法

手机验证的正则我知道是这样: ^(13[0-9]|15[0|3|6|7|8|9]|18[8|9])\d{8}$create function dbo.regexReplace(@str char(11))RETURNS intas begin DECLARE @result INT SET @result = 0 IF (LEFT(@str, 3) IN ('130','131','132',...

jiebing的专栏 3276

把 LDB 讲透:SAP ABAP 逻辑数据库的结构、事件模型、动态选择与现代替代方案

摘要:SAP中的Logical Database(LDB)是一种将表组织成树形结构并统一生成选择屏幕的技术,通过事件驱动方式向报表程序传递数据。虽然被标记为过时,但在理解标准代码和优化性能方面仍有价值。LDB通过SE36事务码创建,其结构包含层级关系、选择屏幕和数据库程序。报表通过NODES声明和GET事件处理数据,支持动态选择以减少数据库访问。在S/4HANA和ABAP Cloud环境下,建议使用CDS View和ABAP SQL等现代方案替代LDB,以提升可测试性和架构清晰度。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 217

SAP SD模块定价过程后台配置简介

只有手工输入定价时(例如,在定价中的定价浏览屏幕中),或者只有从外部处理转移这些定价时(例如,成本核算),才将这些定价包括在确定(价格确定、输出确定,批次确定)之中。定价过程的定义和分配是SD模块中最核心的配置,包含了条件表、条件类型、存取顺序、发票类型、客户定价过程等,确定了销售订单已什么价格销售、税率、附加折扣等多个条件行程有一个定价过程。12、小计:记录该条件类型在VBAP表中是否存储,以及其后续用途,如记入信贷,占用信贷额度,记入成本等,如果需要金额暂用信贷额度的话,在小计这里选择A即可。

我小时候很黑的博客 3784

SQL Server生成随机手机号

在SQL Server中使用存储过程生成随机11位手机号。

技术的海洋,知识的海洋。遨游~~ 3794

【python股票价格预测】基于LSTM(长短期记忆网络)的股票价格预测(附python代码)

【python股票价格预测】基于LSTM(长短期记忆网络)的股票价格预测(附python代码)

k8291121的博客 1013

sqlserver取模_SqlServer生成连续数字根据指定的数字操作

需求是使用sqlserver根据指定的数字和表生成一串连续的数字,类似于oracle中ROWNUM的功能,具体实现如下:一、Oracle使用ROWNUM实现方式SELECTROWNUM number_listFROM 表名WHERE ROWNUM <= 10;二、SqlServer实现上述功能的三种方式1.使用MASTER…spt_values方式SELECTnumberFROMMASTER...

weixin_35516273的博客 687

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

T-SQL:一道医院信息科的面试题

得到一份1200多人的Excel格式名单(含手机号,姓名),为其做一个接种疫苗计划。 具体要求: 将名单中的人员随机排序形成一个新次序。按这个次序,每150人分为一组。第一组的接种时间是7:30-8:30,第二组是8:30-9:30.......依次类推。组内不再区分次序。 试使用MSSQL生成这个接种计划表。形如 姓名、手机号、接种时段。 我的方案: 关键点1、导入数据到数据库。由于源文件是Excel,存在64位兼容性问题,因此先另存为csv之类的平面文件再导入。 关键点2、随机排序。其实MSSQ

ki1381的专栏 2300

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

mysql spt values_SqlServer生成连续数字根据指定的数字操作

需求是使用sqlserver根据指定的数字和表生成一串连续的数字,类似于oracle中ROWNUM的功能,具体实现如下:一、Oracle使用ROWNUM实现方式1234SELECTROWNUM number_listFROM 表名WHERE ROWNUM <= 10;二、SqlServer实现上述功能的三种方式1.使用MASTER…spt_values方式12345678SELECTnumb...

weixin_32019909的博客 370

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

sql生成手机号码

DECLARE @i int set @i = 1 WHILE @i &lt; 10000 BEGIN insert into sj SELECT CONVERT(varchar, CAST(RAND()* (139 - 130) + 130 AS int)) + CONVERT(varchar, CAST(RAND() * (99999999 - 32928404) + 3...

weixin_33720452的博客 670

关于mysql数据库手机号替换*

select INSERT(a.phone,5,4,'****') AS mobile from table a where 1=1

我怀念的是-无话不说的博客 2045

SQLSERVER 一个简单的游标应用

declare test_cursor cursor scroll for select id from member open test_cursor declare @id int while @@FETCH_STATUS=0 begin print @id update member set mobile = cast(rand()*100000000000 as bigint...

Douglozy的博客 352

原来MySQL的存储过程也可以这么玩?

一、什么是存储过程? MySQL5.0版本开始支持的存储过程。 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。 存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。 二、存储过程优缺点 2.1 优点 存储过程可封装,并隐藏复杂的商业逻辑。 存储过程可以回传值,并可以接受参数。 存储过程无法使用 存

程序员麦冬的博客(公众号同名) 308

NC 数据简单脱敏 sql处理(sql server版)

随着新的法律要求和业务需求,有些企业深刻地意识到,对数据的安全和脱敏处理,以保护敏感数据,如PII,假面具等,非常重要。 SQL Server 技术可以提供优质的解决方案,这种技术可以将真实数据转换为假数据,以简便的方式处理数据,并防止数据被非法使用。 -- 脱敏姓名 UPDATE bd_psndoc SET name = (iif(LEN(name)>2, CONCAT(LEFT(name, 1), '**' ), CONCAT(LEFT(name, 1), '*' ))); -- 脱敏身份证号

u010741112的博客 865

sqlserver 存储过程返回表数据_5分钟使用存储过程,构建百万测试数据!

01怎么创建测试数据如果你会编程语言,那么你可以使用java、python、php等等语言通过对应的工具包操作数据库来完成测试数据的构建。如果你不会这些语言,恰好你又会一些sql语句,使用存储过程完成测试数据构造是再好不过了。并且存储过程就是sql脚本,存储、执行、查看结果都在一个工具类就可完成非常方便。(本例采用mysql数据库)02什么是存储过程存储过程(Stored Procedu...

weixin_39804641的博客 818

MSSQL 课程练习

--=========================第一阶段==================================================================== /*$$$$$$$$$$$$$ 创建文件夹 $$$$$$$$$$$$$$$$$$*/ use master go exec xp_cmdshell 'mkdir c:\bank', no_outp...

weixin_30698297的博客 210

个人永久性免费-Excel催化剂功能第99波-手机号码归属地批量查询

高潮过往趋于平静,送上简单的手机号码归属地查询,因接口有数量限制,仅能满足少量数据需求,如有大规模数据却又想免费获得,这就成为无解了,数据有价,且用且珍惜。 业务使用场景 除了日常自带的手机各种管家为我们识别手机号归属地以外,如果自身的会员数据,能够对手机号的信息进行识别,增加一些维度可分析,也是不错的选择。 因这样的数据接口,一般是满足个人用户免费少量手动数据查询需要,大...

weixin_30629977的博客 672

记一次补天公益SRC漏洞挖掘:弱口令+SQL注入+信息泄露

本文记录了在补天公益SRC平台进行的漏洞挖掘实战过程。通过Fofa、Nmap等工具对目标资产进行信息收集后,依次发现了三个高危漏洞:后台管理弱口令(MD5加密可爆破)、敏感信息泄露(明文显示用户隐私数据)以及MSSQL报错注入(订单管理功能点)。文章详细展示了从资产探测到漏洞验证的完整流程,包括BurpSuite爆破加密密码、分析前端代码等具体操作,并针对每个漏洞给出了修复建议。该案例展示了ASP.NET+MSSQL架构常见的安全风险,为安全初学者提供了规范的漏洞挖掘方法论,强调渗透测试必须在授权范围内进行

2502_91184127的博客 1418
下一篇: 【SQLServer】验证身份证号第18位校验码是否合法
JersonFym
博客等级 码龄9年 3粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值