小编典典

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

sql

这是一个例子;

我有数字列表(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

问题是号码表是动态的。它可以没有任何值。因此,我需要一种适当的系统方法将这些值转换为临时表行。


阅读 407

收藏
2021-03-23

共1个答案

小编典典

我大量使用的解决方案…

VARCHAR(MAX)逗号分隔的字符串形式提供数字列表,然后使用dbo.fn_split()人们在线编写的众多功能之一。

在线的 许多 示例之一…
SQL用户定义函数来解析一个带分隔符的Str

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

然后,您可以做…

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

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

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

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

2021-03-23