TSQL RAND随机值

Gib*_*boK 3 sql database sql-server

我需要在表格中填充虚拟值.

我需要为创建的每一行创建一个随机生成的值"RANDOM_VALUE".

随机值必须是字符串,其范围可以只是"A"或"B".

该脚本应该能够列出一系列随机生成的值为A或B的行

这是一个应该如何工作的例子:

ROW   RANDOM_VALUE
1     A
2     B
3     B
4     A
...   ...
Run Code Online (Sandbox Code Playgroud)

有什么想法怎么做?谢谢!

Mar*_*ith 14

Rand()每列只评估一次,所以对于所有行都是相同的,你可以使用NewId()如下所示.

SELECT CHAR(65+ABS(CHECKSUM(NEWID()))%2), RestOfCols
FROM YourTable
Run Code Online (Sandbox Code Playgroud)

如果你需要完全按照你的问题输出,只需加入一个足够大的桌子.例如

WITH cte AS
(
SELECT 
      ROW_NUMBER() OVER (ORDER BY (SELECT 0)) AS ROW,
      CHAR(65+ABS(CHECKSUM(NEWID()))%2) AS RANDOM_VALUE
FROM sys.objects
)
INSERT INTO DummyTable
SELECT ROW,RANDOM_VALUE 
FROM cte 
WHERE ROW<= 4
Run Code Online (Sandbox Code Playgroud)

  • +1 - 我看到RAND()问题只被评估一次,但在TSQL书籍中没有提到它.很高兴确认它! (2认同)