select * where id in ( 参数怎么写? ) —— 楼主在线中!解决立马结贴。

乘思者 2006-02-16 11:34:53
要求写一存储过程,查询某字段符合程序中一个数组中包含的项值得记录,如何写?
用select...in ,那么参数写?

或者有没有其它什么更好的方法?
...全文
2363 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
yahle 2006-02-18
  • 打赏
  • 举报
回复
提供一个方案
select * form docs where id in (select id form user where xx = yy)
乘思者 2006-02-16
  • 打赏
  • 举报
回复
如果 传入 @ar = '1,2,3'
直接执行 in(@ar)
—— 太理想化了吧!
lovcal 2006-02-16
  • 打赏
  • 举报
回复
你的数组数量固定么?不行的话你在主程序里拼成一个字符串当一个参数传进来
lin_now 2006-02-16
  • 打赏
  • 举报
回复
看者有分!?
mschen 2006-02-16
  • 打赏
  • 举报
回复
--存储过程不能接收数组做参数,如果可能可以里边的成员用,号分割当字符川传入,然后在SQL SERVER存储过程里边解析.
mschen 2006-02-16
  • 打赏
  • 举报
回复
--存储过程不能接收数组做参数,如果可能可以里边的成员用,号分割当字符川传入,然后在SQL SERVER存储过程里边解析.
子陌红尘 2006-02-16
  • 打赏
  • 举报
回复
create procedure sp_test(@str varchar(200))
as
exec('select * from 表 where id in('+@str+')')
go
QQMagicer 2006-02-16
  • 打赏
  • 举报
回复
数组没法直接传入存储过程,你在程序中将数组的相关值读出来,再作为参数传给存储过程好了
zlp321002 2006-02-16
  • 打赏
  • 举报
回复

declare @is varchar(200)
set @is='1,2,3'
select * from 表 where charindex(','+cast(id as varchar)+',',','+@is+',')>0
lsqkeke 2006-02-16
  • 打赏
  • 举报
回复
create pro c(
@a varchar(20)
)
as
select * from tb where id in(@a)
go

exec c('1,2,3')
QQMagicer 2006-02-16
  • 打赏
  • 举报
回复
create procedure proname
(
@tmp varchar(50)
)
select * from tablename where charindex(id,@tmp)>0
mschen 2006-02-16
  • 打赏
  • 举报
回复
create proc dbo.p_Test
@i1 varchar(10),
@i2 varchar(10),
@i3 varchar(10)
as
select *
from table
where id in (@i1,@i2,@i3)
Go
乘思者 2006-02-16
  • 打赏
  • 举报
回复
1,2,3——在程序当中是由一个数组,怎么传入存储过程里面,还有 ,exec script 是解释执行的,失去存储过程性能优化的意义了。
乘思者 2006-02-16
  • 打赏
  • 举报
回复
要求1,2,3用变量传入,存储过程怎么写?
-狙击手- 2006-02-16
  • 打赏
  • 举报
回复
要是变量
exec('select * from table where id in('+@lm+')')
要是结果集
select * from table where id in (select id from table where ...)
dulei115 2006-02-16
  • 打赏
  • 举报
回复
select 1 where 1 in (1,2,3)
Jane_64 2006-02-16
  • 打赏
  • 举报
回复
@ar = '1,2,3'
select * from 表 where charindex(id,@ar)>0
这句也可以检索id 分别为 1,2,3的纪录?何解?
不大能理解。
--------------------
没问题
乘思者 2006-02-16
  • 打赏
  • 举报
回复
@ar = '1,2,3'
select * from 表 where charindex(id,@ar)>0
这句也可以检索id 分别为 1,2,3的纪录?何解?
不大能理解。
Jane_64 2006-02-16
  • 打赏
  • 举报
回复
如果 传入 @ar = '1,2,3'
直接执行 in(@ar)
—— 太理想化了吧!
-------------------------------

直接执行 in(@ar) 是不行的,可以
exec('select * from 表 where 字段 in (' + @ar + ')')

select * from 表 where charindex(字段,@ar)>0

34,594

社区成员

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

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