如何使用SQL(SQL Server)将数字列表转换为(临时)表

问题描述 投票:5回答:4

这是一个例子;

我有数字列表(1,5,8,36),我希望这些值作为(临时)表行。其中一种方法如下

select 1 as n into ##temp
union
select 5  as n 
union 
select 8 as n
union 
select 36 as n

问题是数字列表是动态的。它可以没有任何价值观。所以我需要一种适当的系统方法将这些值转换为临时表行。

sql sql-server sql-server-2008 temp-tables
4个回答
6
投票

我使用的解决方案很多......

将您的数字列表作为qazxsw poi逗号分隔字符串提供,然后使用人们在线编写的众多qazxsw poi函数之一。

在线的许多例子之一... VARCHAR(MAX)

这些函数将字符串作为参数,并返回一个表。

那你就可以做......

dbo.fn_split()

另一种方法是查看表值参数。这些允许您将整个表作为参数传递给存储过程。如何取决于您使用的框架。你是.NET,Java,Ruby等,你是如何与数据库通信的?

一旦我们了解了有关应用程序代码的更多详细信息,我们就可以向您展示客户端代码和SQL存储过程模板,以便使用表值参数。


0
投票

您可以使用下面的查询从1到9选择100随机值

SQL-User-Defined-Function-to-Parse-a-Delimited-Str

0
投票

我将它用于一组通用的编号行。

INSERT INTO @temp SELECT * FROM dbo.split(@myList)

SELECT
  *
FROM
  myTable
INNER JOIN
  dbo.split(@myList) AS list
    ON list.id = myTable.id

0
投票
Declare @Index Int = 1
Declare @Result Table (Col Int)
While @Index <= 100 Begin
    Insert Into @Result (Col)
    Select FLOOR( RAND() * 10)

    Set @Index = @Index + 1 
End

Select * From @Result
© www.soinside.com 2019 - 2024. All rights reserved.