sql - 如何在 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
解决方案
那是不正确的语法。您不能将两个整数放入变量中,并且 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)
推荐阅读
- haskell - 在 Haskell 中重新排序字符顺序?
- c# - 在 C# (Blazor) 中使用 HATEOAS 的 API 的并行 GET
- python - 从列表的数据创建图形
- java - Sencha Cmd 5 - java.lang.NoClassDefFoundError
- c++ - 从资源加载 VCL 样式
- c - C语言中的UDP文件传输
- html - 将DIV添加到body标签后设置DIV的内部html
- c# - 具有可为空类型的泛型约束
- android - 是否可以使用低功耗蓝牙进行数十个活动连接?
- android - Heremap AndroidXMapFragment 回压处理