in查询能多值查询吗?

xjq301 2005-04-15 08:24:47
cwhid是nvarchar类型 ,我想用in查询
select cmteid ,cmtename,cdes from stock where cwhid in(@cwhid)
我想用set @cwhid=('01','02','12')查询,但是得不到结果,应该怎样查询啊
...全文
140 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
talantlee 2005-04-16
  • 打赏
  • 举报
回复
--====測試-------
drop table a
create table a
(a varchar(100),
b int)
insert into a
select '01',1 union all
select '02',2 union all
select '01',3 union all
select '01',4 union all
select '02',5 union all
select '03',6 union all
select '03',7 union all
select '01',8 union all
select '04',9 union all
select '05',10 union all
select '01',11
declare @sqlstr varchar(8000)
declare @cwhid varchar(100)
set @cwhid ='(''01'',''02'')'
print @cwhid
set @sqlstr='select * from a where a in'+@cwhid
exec(@sqlstr)
---------------結果
01 1
02 2
01 3
01 4
02 5
01 8
01 11
可見能通過
talantlee 2005-04-16
  • 打赏
  • 举报
回复
declare @sqlstr varchar(8000)
declare @cwhid varchar(100)
set @cwhid ='(''01'',''02'',''12'')'
set @sqlstr='select 1 from stock where cwhid in'+@cwhid--你這樣先檢查一下能不能通過
exec(@sqlstr)
lengxiaowei 2005-04-16
  • 打赏
  • 举报
回复
cwhid是nvarchar类型 ,我想用in查询
select cmteid ,cmtename,cdes from stock where cwhid in(@cwhid)
我想用set @cwhid=('01','02','12')查询,但是得不到结果,应该怎样查询啊

declare @sqlstr varchar(8000)
declare @cwhid varchar(100)
set @cwhid ='(''01'',''02'',''12'')'
set @sqlstr='select cmteid ,cmtename,cdes from stock where cwhid in'+@cwhid
exec(@sqlstr)
xjq301 2005-04-16
  • 打赏
  • 举报
回复
talantlee,按你说的不行啊,还是查询不到结果,我是在存储过程查询的,


declare @as_bmteid varchar(20) ,
@as_emteid varchar(20),
@as_cwhid varchar(20)


set @as_cwhid = '(''01'',''02'',''12'')'

select stock.cmteid, product.ccname, product.cspec, product.cunitid,'@' as 'ccolorid',
0 as 'dnetqty',0 as 'dmrpqty',sum(stockc.dqty) as 'dqty', product.dmin, stock.dqty3,
stock.dqty4, stock.dqty2, stock.dqty1, 0
from stock, stockc, warehous, product
where stock.cmteid = stockc.cmteid
and stockc.cwhid = warehous.cwhid
and stockc.cmteid = product.cmteid
and (stock.cmteid >= @as_bmteid or @as_bmteid is null or len(@as_bmteid) = 0)
and (stock.cmteid <= @as_emteid or @as_emteid is null or len(@as_emteid) = 0)
and stockc.cwhid in ( @as_cwhid )
and product.cstop <> '1' and (warehous.cuserflag is null or warehous.cuserflag = '1')
group by stock.cmteid, product.ccname, product.cspec, product.cunitid,--dnetqty,dmrpqty,
product.dmin, stock.dqty3, stock.dqty4, stock.dqty2, stock.dqty1
order by stock.cmteid
talantlee 2005-04-15
  • 打赏
  • 举报
回复
set @cwhid=('01','02','12')--->這裡是一個集合(而不是個字符串)
你以後可以這樣檢測一下
declare @cwhid varchar(100)
set @cwhid = '(''01'',''02'',''12'')'
print @cwhid ---看這裡是不是你想要的結果
woodcord 2005-04-15
  • 打赏
  • 举报
回复
学习ing
chiwei 2005-04-15
  • 打赏
  • 举报
回复
楼上的稍微有点问题,缺少个逗号修改一下
declare @s_sql varchar(200)
declare @cwhid varchar(100)
set @cwhid = '(''01'',''02'',''12'')'
set @s_sql = 'select cmteid ,cmtename,cdes from stock where cwhid in ' + @cwhid
exec(@s_sql)
wudan8057 2005-04-15
  • 打赏
  • 举报
回复
declare @s_sql varchar(200)
declare @cwhid varchar(100)
set @cwhid = '(''01'',''02'',''12'')'
set @s_sql = select cmteid ,cmtename,cdes from stock where cwhid in ' + @cwhid
exec(@s_sql)

34,873

社区成员

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

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