0

SQL Serverクエリで返される5つの固定文字列の1つをランダムに選択する最も簡単な方法は何ですか?

つまり、次と同等です。

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

クライアントコードを変更せずに、特定の列がこれらの値の1つを返すように、既存のSQLスクリプトを変更する必要があります。

一時テーブルを作成する必要がありますか?

SQL Server2008R2を使用しています。

4

4 に答える 4

3
select top 1 Value
from Table1
order by newid()

SQLフィドルの例

于 2012-09-11T20:05:42.573 に答える
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 に答える
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 に答える