首页 > 解决方案 > 如何在 int 上声明列表

问题描述

在 MS SQL 中,我需要声明 int 列表以在IN子句中使用它。像这样:

DECLARE @DATE AS DATE = '01.01.2018'
SELECT * FROM tank_state WHERE dt = @DATE AND tankId IN (14,15)

这工作很好。好的。

在这里 DECLARE

DECLARE @DATE AS DATE = '01.01.2018'
DECLARE @listOfIDs int = 14,15
SELECT * FROM tank_state WHERE dt = @DATE AND tankId IN (@listOfIDs)

但我得到错误:

Error: Incorrect syntax near '15'.
SQLState:  42000
ErrorCode: 102
Error: Must declare the scalar variable "@listOfIDs".
SQLState:  S1000
ErrorCode: 137

标签: sqlsql-server

解决方案


那是不正确的语法。您不能将两个整数放入变量中,并且 14,15 将无法转换为整数。

一种选择是将这些值放入表中:

DECLARE @ints TABLE (val INT)
INSERT INTO @ints (val)
VALUES 
(14),
(15)

SELECT * FROM tank_state WHERE dt = @DATE AND tankId IN (SELECT val FROM @ints)

推荐阅读