2016-05-27 10 views
0

テーブルからデータを取得するための小さなクエリがありますが、なんらかの理由で時々動作しません。エラー22003 - SQL Server INエラー

Table TEST

クエリ#1:

Error: 22003 - [SQL Server]The conversion of the nvarchar value '5492215893737' overflowed an int column.

declare @in_array varchar(128) = '51831,43010' 
declare @sql_ varchar (128) = 'SELECT * FROM TEST WHERE ARRAYT IN ('[email protected]_array+')' 
select @in_array as 'output' 
EXEC (@sql_) 

クエリ#2:

The conversion of the nvarchar value '5492215893737' overflowed an int column.

:罰金

declare @in_array varchar(128) = '5492215893737' 
declare @sql_ varchar (128) = 'SELECT * FROM TEST WHERE ARRAYT IN ('[email protected]_array+')' 
select @in_array as 'output' 
EXEC (@sql_) 

クエリ#3作品

declare @in_array varchar(128) = '5492215893737, 13737171' 
declare @sql_ varchar (128) = 'SELECT * FROM TEST WHERE ARRAYT IN ('[email protected]_array+')' 
select @in_array as 'output' 
EXEC (@sql_) 

クエリ#4:

Error: [Err] 42S22 - [SQL Server]Invalid column name 'justtest'.
42S22 - [SQL Server]Invalid column name 'thisis'.

declare @in_array varchar(128) = 'thisis, justtest' 
declare @sql_ varchar (128) = 'SELECT * FROM TEST WHERE ARRAYT IN ('[email protected]_array+')' 
select @in_array as 'output' 
EXEC (@sql_) 

私は私の@in_arrayを変更することはできません。コード付き が、私はこれを取得ジョルジによって提供::第二選択されていない作業が、なぜ私はvarが常に「VAR1、VAR2、VAR3、VAR4、VARN」(varcharタイプ)

#UPDATEのようでなければならないことを意味します3番目は働いていますか?

enter image description here

+0

ARRAYTのデータタイプは何ですか? –

+0

こんにちは、varchar(250) – Jorge

答えて

0

入力文字列内のこれらの値は、単一引用符で囲まれなければなりません。スクリプトの開始時に変数を変更します。

set @in_array = '''' + replace(@in_array, ', ', ''',''') + '''' 
+0

私の質問が更新されました。 – Jorge

0

これは文字列なので、SQLに十分な引用符を付ける必要があります。これはうまくいくはずです:

declare @in_array varchar(128) = '''5492215893737'', ''13737171''' 
declare @sql_ varchar (128) = 'SELECT * FROM TEST WHERE ARRAYT IN ('[email protected]_array+')' 
select @in_array as 'output' 
EXEC (@sql_)