T-SQL SELECT没有TempTable的随机varchar值

时间:2017-09-25 13:04:16

标签: sql-server sql-server-2008

然后创建临时表的其他方法是在内联查询中选择随机列值的优雅方法

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]

修改

我想在查询中每行随机生成一个样本数据集

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以通过在以下内容中使用带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]

答案 1 :(得分:0)

您可以使用带选择功能

的变量来实现
DECLARE @rand INT
SET @rand = ABS(CONVERT(BIGINT,CONVERT(BINARY(8), NEWID()))) % 3 + 1 

SELECT [Col1],
       [Col2],
       Choose(@rand,'A','B','C','D') AS RandColValue, 
       [Col3]
FROM [dbo].[MyTable]