传递一串数字,并希望将此字符串转换为数字列表,例如
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。
时转换失败
答案 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代码中的字符串替换方法,该方法将删除引号。