SQL - 将数字字符串转换为整数列表

时间:2014-05-14 16:13:56

标签: java sql sql-server

传递一串数字,并希望将此字符串转换为数字列表,例如

SELECT personID from person WHERE personID IN ('927,6944')

如何将('927,6944')转换为(927,6944)

这是我尝试运行查询时收到的错误消息:

  

Msg 245,Level 16,State 1,Line 1   将varchar值'927,6944'转换为数据类型int。

时转换失败

3 个答案:

答案 0 :(得分:1)

删除引号(引号暗示varchar)

SELECT personID FROM person WHERE personID IN (927, 6944)

答案 1 :(得分:0)

您需要使用动态sql。传递价值' 927,6944'作为@Parameter

DECLARE @Parameter varchar(100)
DECLARE @Query varchar(200)
SET @Parameter='927,6944'   --An example

SET @Query='SELECT personID from person WHERE personID IN ('+@Parameter+')'
EXEC(@Query);

<强>解释

执行时,@Query包含以下内容:

SELECT personID FROM person WHERE personID IN (927, 6944)

您需要从程序本身进行整个查询并直接执行它。

答案 2 :(得分:0)

我怀疑可以从没有引号的java代码生成此查询。注入SQL时,带有这些数字的字符串不需要包含引号。如果出于某种原因,在进行查询时不容易删除引号,请尝试将其传递给java代码中的字符串替换方法,该方法将删除引号。