日期:2014-05-17  浏览次数:20598 次

这个语句会出现重复的BIGINT数吗?
在网上找的获取一个随机的不重复的BIGINT数语句。

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


------解决方案--------------------
肯定会 不过机率不大
------解决方案--------------------
会的,就不说字符会不会产生重复的校验和,checksum返回的int类型,包括正负值,他们的绝对值肯定会有重复的
------解决方案--------------------
会,就连guid都有重复的机率,只不过重复的概率接近于0
------解决方案--------------------
引用:
会,就连guid都有重复的机率,只不过重复的概率接近于0

真的么?guid不是号称全球唯一吗
------解决方案--------------------
引用:
引用:会,就连guid都有重复的机率,只不过重复的概率接近于0
真的么?guid不是号称全球唯一吗

理论上是唯一的,但不代表没有重复的可能性,guid是32位16进制数,重复的概率接近于0
------解决方案--------------------
CHECKSUM(NEWID())这个函数已经保证几乎不可能重复了,当然没有绝对,很多年前看过GUID的介绍,说它也只保证3000年内是没有重复而已,还有就是所谓的人的指纹不重复,但是其实还是会的,只是当人口要达到200亿的时候才会有可能。
况且bigint已经足够大,所以只要算法合理,是不用担心这部分的。
------解决方案--------------------
引用:
CHECKSUM(NEWID())这个函数已经保证几乎不可能重复了,当然没有绝对,很多年前看过GUID的介绍,说它也只保证3000年内是没有重复而已,还有就是所谓的人的指纹不重复,但是其实还是会的,只是当人口要达到200亿的时候才会有可能。
况且bigint已经足够大,所以只要算法合理,是不用担心这部分的。

真是什么理论量化了都不靠谱~
------解决方案--------------------
概论论上那些不可能事件也只是小概率事件而已嘛
------解决方案--------------------
bigint十进制为20位左右,完全可以把时间信息更完整的放进来:yymmddhhmm(10位)
比现在的只放6位日期,重复的概率要低1万倍
------解决方案--------------------
哦,加了hhmm没低1万倍,只低3600倍
改为szzz(秒的个位数+毫秒数),才低1万倍