【问题标题】:Add random string in a column to each row in database将列中的随机字符串添加到数据库中的每一行
【发布时间】:2013-11-13 02:31:08
【问题描述】:

我使用的是 SQL Server 2008,我有一个大约 1000 行的数据库。

还有一列叫Password,每一行都是空的。

通常我可以执行类似INSERT INTO Password VALUES("helloworld"); 之类的操作,将某些内容添加到Password 列中,但随后所有行都会得到相同的Password

但我希望数据库中的每一行都有一个不同的Password,一个包含 10 个字符(字符串和整数)的随机单词。

有人可以指导我如何做到这一点吗?

【问题讨论】:

  • 可以显示表格定义吗?

标签: sql database sql-server-2008 random passwords


【解决方案1】:

使用 guid 的子字符串可能会起作用:

SELECT SUBSTRING(CONVERT(varchar(40), newid()), 1, 10)

如果破折号有问题,请更换它。

SELECT SUBSTRING(REPLACE(CONVERT(varchar(40), newid()), '-', ''), 1, 10)

但是,请注意,这并不能保证每一行的密码都是唯一的,因为我们只使用了 guid 的一部分。

【讨论】:

  • 如果我将“密码”实体设置为数据库中的唯一实体?
  • 密码是否限制为 10 个字符?或者我们可以得到 32 个字符吗?如果我们可以使用 32 个字符,那么替换破折号将为您提供唯一值。如果使用破折号,则需要 36 个字符。
  • 不,我可以更改为超过 10 个字符,但我不想有长密码 :)
  • 使用 1000 个密码甚至 10000 个密码,上述方法(极)不太可能产生重复,但如前所述,不能保证。
  • 关于唯一标识符的讨论,我推荐阅读this问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多