当前位置: 代码迷 >> SQL >> 随机产生银行卡卡号,该怎么处理
  详细解决方案

随机产生银行卡卡号,该怎么处理

热度:252   发布时间:2016-05-05 15:30:26.0
随机产生银行卡卡号
/*------产生随机数------------*/
/*要求:
1>产生银行卡卡号
2>前8位默认为“1010 3576”,代表北京市工商银行
*/
if exists(select * from sysobjects where name='proc_randCardID')
drop procedure proc_randCardID
go
create procedure proc_randCardID
@randCardID varchar(19) output --定义输入参数
as
declare @r numeric(15,8) --15位数,保留8位小数
select @r=rand((datepart(mm,getdate())*100000)+(datepart(ss,getdate())*1000)+
datepart(ms,getdate())) --随机产生后8位的卡号
print convert(varchar(11),@r)
set @randCardID='1010 3576 ' +substring(convert(varchar(10),@r),3,4)+' '
+substring(convert(varchar(10),@r),4,6)
go
declare @mycardID char(19)
exec proc_randCardID @mycardID output
print '产生的随机卡号为:' + @mycardID



------解决方案--------------------
我记得是有规律的 你好象还不知道吧
------解决方案--------------------
/*卡号随机产生*/
create proc proc_randmon
(
@outID varchar(19) output --要生成的卡号
)
as
 declare @inID varchar(19)
 set @inID='6225 8802'
 declare @randmon numeric(18,16) --随机生成的卡号
 set @randmon=rand(datepart(dd,getdate())*10000+datepart(ss,getdate())*1000+datepart(ms,getdate()))
 set @[email protected]+' '+substring((convert(varchar,@randmon)),3,4)+' '+substring((convert(varchar,@randmon)),7,4)
go

declare @randNum varchar(19)
exec proc_randmon @randNum output
print '生成的卡号:'+convert(varchar,@randNum)

这个是正确的,你的有点问题啊你看看
------解决方案--------------------
use master
go
 if(select*from sysobjects where name='proc_randcardid')
create proc proc_randcardid --创建存储过程
@outID varchar(19) output --要生成的卡号 
as 
declare @inID varchar(19) 
declare @cardid varchar(19)
set @inID='6225 8802' 
declare @randmon numeric(18,8) --随机种子
set @randmon=rand(datepart(dd,getdate())*10000+datepart(ss,getdate())*1000+datepart(ms,getdate())) 
set @cardid=convert(varchar(10),@randmon)
set @[email protected]+' '+substring( @cardid,3,4)+' '+substring(@randmon,7,4) 
go 

declare @randNum varchar(19) 
exec proc_randcardid @randNum output 
print '生成的卡号:'+convert(varchar,@randNum) 

------解决方案--------------------
学习
------解决方案--------------------
这是北大青鸟S2的课程吧,呵呵...在运行时连续运行,可以产生好几十个相同的卡号,根本不能算是随机的.
直接用产生0-1之间随机数的,然后切两次4位的数过来不就好了.
------解决方案--------------------

------解决方案--------------------
  相关解决方案