CREATE PROCEDURE [dbo].[SelOrderInfo]@id varchar(50)
as
select * from orderinfo where convert(varchar(50),id) in(@id)
go其中id在数据库中的类型为int型的
@id传进来的值是字符串类型的,用逗号分割
这时候是查询不出数据的
这个查询语句我应该怎样写?
或者我应该对后台传入的参数怎做样处理?

解决方案 »

  1.   

    分割
    或者
    select * from orderinfo where id in @Id
      

  2.   

    declare @sql varchar(200)
    set @sql='select * from from orderinfo where id in '+@id+''
    exec(@sql)
      

  3.   

    直接写就行啦create table tb2(NewsId int)
    insert into tb2 values(191) 
    insert into tb2 values(192) 
    insert into tb2 values(168)CREATE PROCEDURE [dbo].[SelOrderInfo] 
    (
    @id varchar(50) 
    )
    as 
    select * from tb2 where NewsId in(@id) exec [SelOrderInfo] '191'NewsId
    -----------
    191
      

  4.   

    CREATE PROCEDURE [dbo].[SelOrderInfo] @id varchar(50) 
    as 
    declare @sql nvarchar(1024)
    set @sql = 'select * from buy where buyid in (' + @id +') '
    exec sp_executesql  @sqlgo exec SelOrderInfo '1001,1002,1003,1004,1005'
    drop proc SelOrderInfo
      

  5.   

    declare @sql nvarchar(1024)
    set @sql = 'select * from buy where buyid in (' + @id +') '
    exec (@sql)
    这样写,也正确的。
      

  6.   

    方法1:把后台数据整理成  '1','2','3' 这个格式。
            select * from orderinfo where id in (@id)
    方法2:把这些数据整理成临时表  然后在匹配。
      

  7.   

    用了前5楼的出现 “将 varchar 值 '1,2' 转换为数据类型为 int 的列时发生语法错误。”
      

  8.   

    select * from orderinfo where charindex(','+id+',',','+@id+',')>0
    这样试试