【问题标题】:How to get numeric random uniqueid in SQL Server如何在 SQL Server 中获取数字随机唯一 ID
【发布时间】:2011-02-20 06:49:37
【问题描述】:

我使用的是 SQL Server 2005,请告诉我如何为表中的每一行获取 6 位数字(应该是随机的唯一数字)值。

我在表格中有一个字段,我需要 6 位数值(随机且唯一)。

请帮我做这件事。

【问题讨论】:

  • 一个 6 位数的值现在不会很独特了吧?
  • 实际上想要一个随机的 6 位数值,并且对于表中的每一行都是唯一的
  • 实际上这将是电话号码的“扩展”.. 所以不能超过这个
  • 为什么要为扩展生成一个唯一的随机数?这似乎是一件不切实际的事情,即使假设您纯粹将其用作测试数据。在不了解您正在开发的系统的更多信息的情况下,我不能肯定地说,但我想绝对确定需要随机和唯一
  • 实际上我们会为每个注册到out site的用户提供一个电话分机号码。

标签: sql sql-server-2005 unique random


【解决方案1】:
SELECT ABS(CHECKSUM(NEWID())) % 999999

电话号码:

SELECT RIGHT('000000' + CAST(ABS(CHECKSUM(NEWID())) % 999999 AS varchar(6)), 6)

NEWID 与 SQL Server 中的随机性差不多。

但是,如果您想要唯一,您不妨从 000000 开始,然后转到 999999。任何随机生成器都会命中 birthday problem

您可以拥有可靠的唯一或随机,但不能同时可靠

【讨论】:

  • @Mitch Wheat:正如你评论的那样,我正在扩展我的答案
  • SELECT LEFT('000000' + CAST(ABS(CHECKSUM(NEWID())) % 999999 AS varchar(6)), 6) 总是给我 000000,没有其他结果
  • @Rajesh Rolen- DotNet 开发人员:我的错误,应该是正确的。对不起。
猜你喜欢
  • 2015-01-14
  • 2014-12-08
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 2020-12-01
  • 2021-10-11
  • 1970-01-01
相关资源
最近更新 更多