Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何将列的值设置为选定选项中的字符串?_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 如何将列的值设置为选定选项中的字符串?

Sql 如何将列的值设置为选定选项中的字符串?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有以下字符串文本 ('Tv','Radio','Magazine','Internet') 我想将表中某一列的值随机设置为上述任意值 所以我想说 update table set type to (('Tv' or 'Radio' or 'Magazine' or 'Internet')) 您可以使用 select aBS(CHECKSUM(NewId())) % 4 这是因为newid()是一个非确定性函数,将为每行返回不同的(随机)值。 所以,用这个来种子一个案例陈述 update

我有以下字符串文本

('Tv','Radio','Magazine','Internet')
我想将表中某一列的值随机设置为上述任意值

所以我想说

update table set type to (('Tv' or 'Radio' or 'Magazine' or 'Internet'))

您可以使用

select aBS(CHECKSUM(NewId())) % 4 
这是因为newid()是一个非确定性函数,将为每行返回不同的(随机)值。 所以,用这个来种子一个案例陈述

update table set type = case aBS(CHECKSUM(NewId())) % 4 
when 0 then 'Tv'
when 1 then 'Radio' 
when 2 then 'Magazine'
when 3 then 'Internet'  end

处理SQL server中的随机数。这有帮助吗?如果列表/项目发生更改,您可以在分解项目后从字符串(sp_executesql)运行查询。所以这个解决方案非常灵活;可以将列表传递给函数/SP以随机返回项目是否可以避免0选项?实际数字对查询不重要,但如果需要1-4,则可以使用(aBS(CHECKSUM(NewId())%4)+1
CREATE TABLE #rnd (col VARCHAR(25))
INSERT INTO #rnd
SELECT slit FROM
(
   SELECT 'Tv' AS slit
   UNION ALL
   SELECT 'Radio' AS slit
   UNION ALL
   SELECT 'Magazine' AS slit
   UNION ALL
   SELECT 'Internet' AS slit
) AS foo
GO
SELECT TOP 1 * FROM #rnd ORDER BY newid()