首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于保存整数列表的SQL变量

用于保存整数列表的SQL变量
EN

Stack Overflow用户
提问于 2013-08-22 12:59:15
回答 8查看 420.1K关注 0票数 209

我正在尝试调试其他人的SQL报告,并已将底层报告查询放入SQL 2012的查询窗口中。

报告要求的参数之一是整数列表。这是通过多选下拉框在报告上实现的。报告的底层查询在where子句中使用这个整数列表,例如

代码语言:javascript
复制
select *
from TabA
where TabA.ID in (@listOfIDs)

我不想修改我正在调试的查询,但是我不知道如何在SQL Server上创建一个可以保存这种类型的数据的变量来测试它。

例如:

代码语言:javascript
复制
declare @listOfIDs int
set listOfIDs  = 1,2,3,4

没有可以保存整数列表的数据类型,那么如何在我的SQL Server上使用与报告相同的值运行报告查询?

EN

回答 8

Stack Overflow用户

发布于 2013-08-22 14:01:07

Table variable

代码语言:javascript
复制
declare @listOfIDs table (id int);
insert @listOfIDs(id) values(1),(2),(3);    

select *
from TabA
where TabA.ID in (select id from @listOfIDs)

代码语言:javascript
复制
declare @listOfIDs varchar(1000);
SET @listOfIDs = ',1,2,3,'; --in this solution need put coma on begin and end

select *
from TabA
where charindex(',' + CAST(TabA.ID as nvarchar(20)) + ',', @listOfIDs) > 0
票数 272
EN

Stack Overflow用户

发布于 2015-10-16 21:11:40

假设变量类似于:

代码语言:javascript
复制
CREATE TYPE [dbo].[IntList] AS TABLE(
[Value] [int] NOT NULL
)

并且存储过程正在以这种形式使用它:

代码语言:javascript
复制
ALTER Procedure [dbo].[GetFooByIds]
    @Ids [IntList] ReadOnly
As 

您可以创建IntList并调用过程,如下所示:

代码语言:javascript
复制
Declare @IDs IntList;
Insert Into @IDs Select Id From dbo.{TableThatHasIds}
Where Id In (111, 222, 333, 444)
Exec [dbo].[GetFooByIds] @IDs

或者,如果您自己提供IntList

代码语言:javascript
复制
DECLARE @listOfIDs dbo.IntList
INSERT INTO @listofIDs VALUES (1),(35),(118);
票数 42
EN

Stack Overflow用户

发布于 2013-08-22 13:35:17

您是对的,SQL-Server中没有可以保存整数列表的数据类型。但是您可以做的是将整数列表存储为字符串。

代码语言:javascript
复制
DECLARE @listOfIDs varchar(8000);
SET @listOfIDs = '1,2,3,4';

然后,您可以将字符串拆分为单独的整数值,并将它们放入表中。您的过程可能已经做到了这一点。

您还可以使用动态查询来实现相同的结果:

代码语言:javascript
复制
DECLARE @SQL nvarchar(8000);

SET @SQL = 'SELECT * FROM TabA WHERE TabA.ID IN (' + @listOfIDs + ')';
EXECUTE (@SQL);
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18371968

复制
相关文章

相似问题

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