--第一种查询方式(无结果)declare @sn varchar(900)
set @sn='''0000YV00004'',''0001N70004W''';
--print @sn
select top 10 * from TB1 where sn in(@sn)如上代码这样直接执行是查询不到任何结果的,我用打印参数@sn是显示'0000YV00004','0001N70004W'这种格式,应该可以直接在in里面查询啊!而用如下代码是可以
declare @sn varchar(900)
set @sn='''0000YV00004'',''0001N70004W''';
--print @sn
declare @sql varchar(2000)
set @sql ='select top 10 * from TB1 where sn in('+@sn+')'
exec(@sql)
请问为什么第一中sql不能查询出任何结果呢?谢谢
当@sn只是一个变量时第一种方式又可以查询出来
declare @sn varchar(900)
set @sn='0000YV00004';
--print @sn
select top 10 * from StoreLabelInfo where sn in(@sn)
6 回答
largeQ
TA贡献2039条经验 获得超7个赞
我也试过,要不你就试试在存储过程里面拼SQL试试。。。
我觉得原理应该是这样的,在sqlserver里面,一般生成的语句里面,表名,字段名等都是外面加了一个[]
所以我当时猜测,可能就是这个,所以你你第一个其实执行的是select top 10 * from TB1 where sn in(['0000YV00004','0001N70004W']),这是个人猜测。。。
- 6 回答
- 0 关注
- 484 浏览
添加回答
举报
0/150
提交
取消