sql - 如何将随机字符插入到 SQL 数据库列中?

标签 sql sql-server

我想在数据库表的一列中随机放置 253 行“M”和“F”,这可能吗?

示例:

Gender:
M
M
F
M
F
F
M
F
M

最佳答案

对于 MS SQL,您可以使用 NEWIDCHECKSUM功能如下:

  UPDATE Users 
  SET Gender = (CASE WHEN ABS(CHECKSUM(NEWID()) % 2) = 1 THEN 'M' ELSE 'F' END)
  • NEWID() 将生成随机 GUID

  • CHECKSUM() 将生成该 GUID 的哈希

  • ABS() 使其变为 1 或 0

<小时/>

警告!虽然有些人建议使用 RAND函数 - 对于这种特殊情况,请不要使用它。查询如下:

UPDATE Users SET Gender = CASE WHEN (RAND() > 0.5) THEN 'M' ELSE 'F' END

.. 将导致您拥有所有值 M 或 F。

您可能可以播种 RAND函数具有像 Id 这样的值,但值的分布不会很好:比如首先 30-40% 都是 M,然后 30-40% 都是 F,然后再次是 M。

关于sql - 如何将随机字符插入到 SQL 数据库列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44925959/

相关文章:

sql-server - SQL XML 属性值

sql - 无法在对象资源管理器中查看创建的表 - Microsoft SQL Management Studio

mysql - MySQL 中是否可以有条件地计数和添加行标签?

sql - Access 将行连接成单行 : extra conditions needed

sql-server - BUILTIN\Administrators 已删除 - 如何撤消

SQL Server 查询超时取决于 Where 子句

sql-server - 哪个源代码控制系统与 Red Gate SQL Source Control 一起使用

sql - 在 postgres 中创建一个范围

php - 为每个 K2 项目选择所有类别

mysql - 连接多个表