sql 变量赋多值

DECLARE@mzhvarchar(60),@bdatedatetime,@edatedatetimeset@mzh=:mzhSELECTi.vaa04,i.vaa05... DECLARE @mzh varchar(60),@bdate datetime,@edate datetime
set @mzh =:mzh

SELECT i.vaa04 ,i.vaa05 ,d.bck03 ,
f.BBY05 ,f.BBY06 ,f.bby08 ,sum(vaj25) ,f.BBY25
FROM
VAA1 i
join vae1 e on i.vaa01=e.vaa01
join bck1 d on d.bck01=e.bck01b
join VAJ1 c on i.vaa01=c.vaa01 --c.VAA07=e.VAE01
join BBY1 f on f.BBY01=c.BBY01
join abf1 h on f.ABF01=h.ABF01
left join abk1 g on g.abk02=e.abk02
left join bdp1 m on m.bdp02=e.bdp02
WHERE c.ACF01 = 2
and e.vae44 in (1,2,3,4)
--AND vaj51>=@bdate and vaj51<=@edate
and i.vaa04 like '%'+@mzh +'%'
and m.bdp01='02'
group by i.vaa04 ,i.vaa05 ,d.bck03 ,f.BBY05 ,f.BBY06 ,f.bby08 ,f.BBY25
order by vaa04

当:mzh 是多个值时,我这里怎么改?
展开
 我来答
kas68310
2011-04-02 · TA获得超过3637个赞
知道大有可为答主
回答量:1468
采纳率:33%
帮助的人:1172万
展开全部
在数据库:
可以给@mzh定一规则,比如:
prm1+prm2+prm3....
建立一个函数,通过循环对“+”进行分割,并返回一个prm的临时表
然后把like ('%'+@mzh+'%') 中的@mzh改成对prm的子查询

在程序拼接
如果在程序中,可以对and i.vaa04 like '%'+@mzh +'%'做处理
用循环append的方式,把这句替换为:
and
(
i.vaa04 like ('%'+@mzh1 +'%')
or i.vaa04 like ('%'+@mzh2 +'%')
or i.vaa04 like ('%'+@mzh3 +'%')
...
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangzhiqing999
2011-04-02 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3296万
展开全部
可以使用 CHARINDEX 替代 IN 的功能.

细节信息,可仔细看下面的例子:
http://hi.baidu.com/wangzhiqing999/blog/item/1b8698fe14d68d8258ee9014.html
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式