【发布时间】:2016-05-27 23:30:12
【问题描述】:
我有一个小查询要从我的表中获取数据,但由于某种原因有时不起作用。
查询 #1:
错误:22003 - [SQL Server]nvarchar 值“5492215893737”的转换溢出了一个 int 列。
declare @in_array varchar(128) = '51831,43010'
declare @sql_ varchar (128) = 'SELECT * FROM TEST WHERE ARRAYT IN ('+@in_array+')'
select @in_array as 'output'
EXEC (@sql_)
查询 #2:工作正常
declare @in_array varchar(128) = '5492215893737'
declare @sql_ varchar (128) = 'SELECT * FROM TEST WHERE ARRAYT IN ('+@in_array+')'
select @in_array as 'output'
EXEC (@sql_)
查询 #3:
nvarchar 值 '5492215893737' 的转换溢出了一个 int 列。
declare @in_array varchar(128) = '5492215893737, 13737171'
declare @sql_ varchar (128) = 'SELECT * FROM TEST WHERE ARRAYT IN ('+@in_array+')'
select @in_array as 'output'
EXEC (@sql_)
查询 #4:
错误:[Err] 42S22 - [SQL Server]列名“justtest”无效。
42S22 - [SQL Server]列名“thisis”无效。
declare @in_array varchar(128) = 'thisis, justtest'
declare @sql_ varchar (128) = 'SELECT * FROM TEST WHERE ARRAYT IN ('+@in_array+')'
select @in_array as 'output'
EXEC (@sql_)
我无法更改我的@in_array。我的意思是 var 应该总是像 'var1, var2, var3, var4, varN' (varchar type)
#更新: 通过 Giorgi 提供的代码,我得到:第二个选择不起作用,但为什么第三个起作用?
【问题讨论】:
-
ARRAYT的数据类型是什么?
-
你好,是 varchar(250)
标签: sql-server