如何转换类型??

crazycyber 2003-09-16 12:39:57
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID = OBJECT_ID(N'sp_ProdColorCount') AND OBJECTPROPERTY(ID,N'ISprocedure') = 1)
DROP procedure sp_ProdColorCount
go
create procedure sp_ProdColorCount
@prods varchar(500)--包括的机型
as
select * from sys_product where prod_id in (@prods)
go
execute sp_ProdColorCount '11,12'

服务器: 消息 245,级别 16,状态 1,过程 sp_ProdColorCount,行 4
将 varchar 值 '11,12' 转换为数据类型为 int 的列

由于prod_id是int的,select * from sys_product where prod_id in ('11,12')
这句语句就不能通过了.
改怎么解决这个问题呢?
...全文
29 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chiff 2003-09-16
  • 打赏
  • 举报
回复
create procedure sp_ProdColorCount
@prods varchar(500)--包括的机型
as
select * from sys_product where ','+@prods+',' like '%,' + prod_id + ',%'
CrazyFor 2003-09-16
  • 打赏
  • 举报
回复
select * from sys_product where prod_id in (@prods)
改成:

select * from sys_product where charinde(','+cast(prod_id as varchar)+',' , ','+@prods+',')>0
pengdali 2003-09-16
  • 打赏
  • 举报
回复
或:

IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID = OBJECT_ID(N'sp_ProdColorCount') AND OBJECTPROPERTY(ID,N'ISprocedure') = 1)
DROP procedure sp_ProdColorCount
go
create procedure sp_ProdColorCount
@prods varchar(500)--包括的机型
as
select * from sys_product where charindex(','+cast(prod_id as varchar(10))+',',','+@prods+',')>0
go
execute sp_ProdColorCount '11,12'
pengdali 2003-09-16
  • 打赏
  • 举报
回复
或:

IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID = OBJECT_ID(N'sp_ProdColorCount') AND OBJECTPROPERTY(ID,N'ISprocedure') = 1)
DROP procedure sp_ProdColorCount
go
create procedure sp_ProdColorCount
@prods varchar(500)--包括的机型
as
select * from sys_product where ','+@prods+',' like ','+cast(prod_id as varchar(10))+','
go
execute sp_ProdColorCount '11,12'
Chiff 2003-09-16
  • 打赏
  • 举报
回复
create procedure sp_ProdColorCount
@prods varchar(500)--包括的机型
as
select * from sys_product where ','+@prods+',' like '%,' + prod_id + ',%'
go
execute sp_ProdColorCount '11,12'

--前提是:prod_id不包含逗号
pengdali 2003-09-16
  • 打赏
  • 举报
回复
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID = OBJECT_ID(N'sp_ProdColorCount') AND OBJECTPROPERTY(ID,N'ISprocedure') = 1)
DROP procedure sp_ProdColorCount
go
create procedure sp_ProdColorCount
@prods varchar(500)--包括的机型
as
exec('select * from sys_product where prod_id in ('+@prods+')')
go
execute sp_ProdColorCount '11,12'
crazycyber 2003-09-16
  • 打赏
  • 举报
回复
问题顺利解决,想不到一个问题学到了这么多解法:)
多谢大家!!

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧