【问题标题】:Declare and set a variable with more than one possible value声明并设置一个具有多个可能值的变量
【发布时间】:2017-08-18 12:34:27
【问题描述】:

是否可以将变量设置为具有多个值?

在下面的示例中,我想设置 @variable 并使用商店编号 1、4、7 和 12

然后使用WHERE 语句中的变量。

下面只是一个例子,看看这是否可能

Declare @Variable INT;

Set @Variable = IN(1,4,7,12)

Select *
From dbo.EUactivestores eu
Where eu.[Store No] = @Variable

任何关于这是否可能的建议,或类似的东西都会很棒。

我相信它可以帮助进行更动态的查询

【问题讨论】:

  • 您可以使用表变量。

标签: sql-server tsql variables declare table-variable


【解决方案1】:

使用像这里这样的表变量

DECLARE @tbl TABLE(v INT);
INSERT INTO @tbl VALUES(1),(4),(7),(12);

您可以在WHERE 子句中使用它,如下所示:

WHERE eu.[Store No] IN(SELECT v FROM @tbl);

完整的工作示例:

DECLARE @tbl TABLE(v INT);
INSERT INTO @tbl VALUES(1),(4),(7),(12);

DECLARE @mockup TABLE(ID INT IDENTITY,SomeValue VARCHAR(100));
INSERT INTO @mockup VALUES('val 1'),('val 2'),('val 3'),('val 4'),('val 5')
                         ,('val 6'),('val 7'),('val 8'),('val 9'),('val 10')
                         ,('val 11'),('val 12'),('val 13'),('val 14'),('val 15');

--仅来自表中的值

SELECT * FROM @mockup AS m
WHERE m.ID IN(SELECT v FROM @tbl);

--或以上的否定

SELECT * FROM @mockup AS m
WHERE m.ID NOT IN(SELECT v FROM @tbl);

【讨论】:

  • 这正是我所需要的!#
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多