除了创建临时表之外,还有一种优雅的方法可以在内联查询中选择随机列值
SELECT [Col1],
[Col2],
ChooseRandomlyFrom('Lateral', 'AP', 'AP Ext Rot', 'PA', 'PA Obl', 'PA Pbl Int Rot', 'Lateral', 'L5 S1', 'PA Navicular'),
[Col3]
FROM [dbo].[MyTable]
我想在查询中随机生成一个样本数据集
最佳答案
您可以通过使用带有 CASE
表达式的变量来实现它:
DECLARE @rand INT
SET @rand = ABS(CONVERT(BIGINT,CONVERT(BINARY(8), NEWID()))) % 3 + 1
SELECT [Col1],
[Col2],
CASE @rand
WHEN 1 THEN 'A'
WHEN 2 THEN 'B'
WHEN 3 THEN 'C'
ELSE 'D'
END AS RandColValue,
[Col3]
FROM [dbo].[MyTable]
或者你可以在没有变量的情况下实现它:
SELECT [Col1],
[Col2],
CASE ABS(CONVERT(BIGINT,CONVERT(BINARY(8), NEWID()))) % 3 + 1
WHEN 1 THEN 'A'
WHEN 2 THEN 'B'
WHEN 3 THEN 'C'
ELSE 'D'
END AS RandColValue,
[Col3]
FROM [dbo].[MyTable]
关于sql-server - 没有 TempTable 的 T-SQL SELECT 随机 varchar 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46405985/