【发布时间】:2022-01-17 15:23:21
【问题描述】:
我想生成随机的瑞士国民身份证号 (AHV/AVS)。
我找到了一个can do that 的网站,如果我查看同一页面的源代码,我也可以看到JavaScript code that can generate it。
这些数字是按照这种模式生成的:
-
756: 是前缀号码,它永远不会改变 -
1234: 是一个随机数 -
5678: 是一个随机数 -
9: 是一个随机数 -
7: 是此计算生成的控制编号:- 从第一个数字开始,每隔一个数字求和:
7 + 6 + 2 + 4 + 6 + 8=33 - 从 drcond 数开始,每隔一个数求和:
5 + 1 + 3 + 5 + 7 + 9=30 - 然后将第二个数字
x 3与第一个数字相加:33 + (30 x 3)=123 - 现在使
10减去该数字的模数:10-(123%10)=10-3=7
- 从第一个数字开始,每隔一个数字求和:
===>这就是我们最终获得
7的方式,这是最后一个数字
我创建了一个SQL命令,可以生成我需要的随机数:
SELECT CONCAT('756.',
FLOOR(RAND(CHECKSUM(NEWID()))*(9999-1000+1)+1000) , '.',
FLOOR(RAND(CHECKSUM(NEWID()))*(9999-1000+1)+1000) , '.',
ABS(CHECKSUM(NEWID()))%10
-- How to select one number out of two?
)
此代码会生成我需要的所有随机数,但我不知道如何从两个数字中选择一个。
不知道T-SQL能否解析数字,二选一。
【问题讨论】:
-
“从第一个数字开始,从两个数字中取一个数字并将它们相加:7 + 6 + 2 + 4 + 6 + 8 = 33” 嗯?取一个数并求和?那将是数字本身。
SUM(7) = 7如果取一个数字,为什么表达式有6个数字?我不遵循这个逻辑。 -
对不起,我的英语很差...你必须总结
first, third, fifth, seventh, nineth, eleven -
你的意思是像“从第一个数字开始,每隔一个数字(第一个、第三个、第五个等)然后
SUM他们。” -
然后
second, forth, sixth, eight, ten, twelve -
是的@Larnu,其他的号码就是我要找的,我要编辑
标签: javascript sql sql-server tsql random