首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SQL (SQL Server)将数字列表转换为(temp)表

问如何使用SQL (SQL Server)将数字列表转换为(temp)表
EN

Stack Overflow用户
提问于 2012-05-16 16:15:55
回答 4查看 17.7K关注 0票数 5

下面是一个例子;

我有一个数字列表(1,5,8,36),我想把这些值作为(临时)表行。其中一种方法是如下所示

代码语言:javascript
复制
select 1 as n into ##temp
union
select 5  as n 
union 
select 8 as n
union 
select 36 as n

问题是数字列表是动态的。它可以有任意的no个值。因此,我需要一种适当的系统方法来将这些值转换为临时表行。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-16 16:33:19

我经常使用的一种解决方案...

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

这是众多在线例子中的一个...SQL-User-Defined-Function-to-Parse-a-Delimited-Str

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

然后你可以做像这样的事情..。

代码语言:javascript
复制
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存储过程模板。

票数 6
EN

Stack Overflow用户

发布于 2012-05-22 06:59:47

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

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2015-10-31 01:41:44

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

代码语言:javascript
复制
SELECT DISTINCT ORDINAL_POSITION AS NUMBER_VAL 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE ORDINAL_POSITION BETWEEN 1 AND 36
ORDER BY ORDINAL_POSITION
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10614499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档