0

随机选择 SQL Server 查询中返回的五个固定字符串之一的最简单方法是什么?

即相当于:

function randomColumn() {
   var values = ['apple', 'banana', 'orange', 'cherry', 'lemon'];
   var idx = Math.floor(Math.random() * 5);
   return values[idx];
}

我需要更改我现有的 SQL 脚本以使某个列返回这些值之一,而无需更改我的客户端代码。

我需要创建一个临时表吗?

我正在使用 SQL Server 2008 R2。

4

4 回答 4

3

您不需要几个字符串的临时表,您可以即时创建结果:

select str
from (
  select 0 as id, 'apple' as str
  union all
  select 1, 'banana'
  union all
  select 2, 'orange'
  union all
  select 3, 'cherry'
  union all
  select 4, 'lemon'
) x
where id = floor(rand() * 5)
于 2012-09-11T20:09:19.640 回答
3
select top 1 Value
from Table1
order by newid()

SQL 小提琴示例

于 2012-09-11T20:05:42.573 回答
1
Select 'apple' values 
INTO #tmp
UNION ALL 
Select'banana' values 
UNION ALL 
Select 'orange' values      
.
.
.  
select top 1 values 
from #tmp
order by newid()

或者

ALTER TABLE #tmp
ADD id BIGINT IDENTITY(1,1)
DECLARE @rand BIGINT 

SET @rand=rand()*4

select top 1 values 
from #tmp
where id=@rand
于 2012-09-11T20:10:25.823 回答
0
DECLARE @ListofIDs TABLE(IDs VARCHAR(100), ID INT IDENTITY(1,1));
INSERT INTO @ListofIDs
SELECT 'a'
UNION ALL
SELECT 'b'
UNION ALL
SELECT '20'
UNION ALL
SELECT 'c'
UNION ALL
SELECT '30'
UNION ALL
SELECT 'd';
SELECT * FROM @ListofIDs;

SELECT  Ids from @ListofIDs where ID=1+ CONVERT(INT, (5)*RAND())
于 2016-08-11T12:01:28.870 回答