sql-server - T-SQL WHERE IN子句:一个参数包含多个INT值会返回类型转换错误
问题描述
我有一个 SP,它通过它的 productid 查找一个产品(只有一个),就像这样(它是查询的一个非常简化的版本)
ALTER PROCEDURE [dbo].[MYSP]
@productid int
AS BEGIN
SET NOCOUNT ON
select * from products where productid = @productid
END
EXEC MYSP 10
在某些特殊情况下,我需要提供两个或多个productid,但不允许将多个参数传递给 SP,因此我尝试将参数从 INT 更改为 VARCHAR 并执行以下操作:
ALTER PROCEDURE [dbo].[MYSP]
@productid varchar(10)
AS BEGIN
SET NOCOUNT ON
select * from products where productid IN (@productid)
END
EXEC MYSP '10,20,30'
但是它会返回一个转换错误,因为表中的 productid 列是 INT。
有解决方法吗?
谢谢!
解决方案
推荐阅读
- flutter - 在 Dart 上创建函数作为参数时出错
- r - 如果多列匹配,R 从一个数据帧复制到另一个数据帧
- angular - 将异常跟踪从角度添加到应用洞察力
- python - 在 Python 中,要制作可变对象的两个或多个副本,除了 deepcopy 的 deepcopy(带备忘录)之外,还有其他方法吗?
- xcode - xCode 和 bitbucket,合并分支到 master
- reactjs - onlineUrs.map 不是 React Js 前端的函数
- wix - 从自定义操作设置属性?
- java - 检索现有 Mongo DB 集合时出现空指针异常
- java - Bindings.select() 依赖没有更新
- python - pytorch自定义损失函数最小化向量之间的角度