这个语句会出现重复的BIGINT数吗?

Henry.6 2013-03-14 02:31:28
在网上找的获取一个随机的不重复的BIGINT数语句。

SELECT CONVERT(char(6),GETDATE(),12) + RIGHT(10000000000 + CONVERT(bigint, ABS(CHECKSUM(NEWID()))),10)

...全文
219 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2013-03-16
  • 打赏
  • 举报
回复
哦,加了hhmm没低1万倍,只低3600倍 改为szzz(秒的个位数+毫秒数),才低1万倍
haitao 2013-03-16
  • 打赏
  • 举报
回复
bigint十进制为20位左右,完全可以把时间信息更完整的放进来:yymmddhhmm(10位) 比现在的只放6位日期,重复的概率要低1万倍
Henry.6 2013-03-16
  • 打赏
  • 举报
回复
我用这语句最诡异的是今天能生成明天日期开头的数 比如130317******* 正常应该是130316******* 现在找不到原因。 周一结贴
發糞塗牆 2013-03-14
  • 打赏
  • 举报
回复
概论论上那些不可能事件也只是小概率事件而已嘛
szm341 2013-03-14
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
CHECKSUM(NEWID())这个函数已经保证几乎不可能重复了,当然没有绝对,很多年前看过GUID的介绍,说它也只保证3000年内是没有重复而已,还有就是所谓的人的指纹不重复,但是其实还是会的,只是当人口要达到200亿的时候才会有可能。 况且bigint已经足够大,所以只要算法合理,是不用担心这部分的。
真是什么理论量化了都不靠谱~
發糞塗牆 2013-03-14
  • 打赏
  • 举报
回复
CHECKSUM(NEWID())这个函数已经保证几乎不可能重复了,当然没有绝对,很多年前看过GUID的介绍,说它也只保证3000年内是没有重复而已,还有就是所谓的人的指纹不重复,但是其实还是会的,只是当人口要达到200亿的时候才会有可能。 况且bigint已经足够大,所以只要算法合理,是不用担心这部分的。
  • 打赏
  • 举报
回复
引用 4 楼 szm341 的回复:
引用 3 楼 hjywyj 的回复:会,就连guid都有重复的机率,只不过重复的概率接近于0 真的么?guid不是号称全球唯一吗
理论上是唯一的,但不代表没有重复的可能性,guid是32位16进制数,重复的概率接近于0
szm341 2013-03-14
  • 打赏
  • 举报
回复
引用 3 楼 hjywyj 的回复:
会,就连guid都有重复的机率,只不过重复的概率接近于0
真的么?guid不是号称全球唯一吗
  • 打赏
  • 举报
回复
会,就连guid都有重复的机率,只不过重复的概率接近于0
szm341 2013-03-14
  • 打赏
  • 举报
回复
会的,就不说字符会不会产生重复的校验和,checksum返回的int类型,包括正负值,他们的绝对值肯定会有重复的
Vidor 2013-03-14
  • 打赏
  • 举报
回复
肯定会 不过机率不大

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧