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

标签 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]

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

最佳答案

您可以通过使用带有 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/

相关文章:

sql-server - 使用 SQL Server 2008 更改跟踪同步框架

.net - Umbraco中的数据库连接初始化失败

sql-server - 如何告诉 Fluent hibernate 如何命名外键?

.net - 使用通过 LINQ 查询的 SQL Server 中的超时异常

sql - 根据 smallint 和 datetime2(7) 的组合计算年份

mysql - 一对多数据库

sql-server - Sql Server 字符串实习

sql-server - 既不支持隔离级别也不支持它的加强

sql-server-2008 - 我的 Entity Framework 生成的 SQL 是否执行了两次?

sql-server-2008 - 从sql server中的记录中选择上个月的第一天