一个表
T_FLOOR
floor_id int //楼层编号
area_id int //楼层所属区域
floor_desc varchar(20)内容为
floor_id area_id floor_desc
1 21 五楼
2 22 四楼
3 21 四楼
4 22 一楼
5 23 二楼我想在存储过程中根据area_id 查询楼层信息
如 我输入参数是 21,23
得到
1 21 五楼
3 21 四楼
5 23 二楼我使用
declare @sArea varchar(20)
set @sArea='21,23'
SELECT floor_id FROM T_FLOOR WHERE area_id in (@sArea)
报错 将 varchar 值 '21,23' 转换为数据类型为 int 的列时发生语法错误。如果使用
declare @sArea varchar(20)
set @sArea='21,23'
select * from t_floor where convert(varchar(5),AREA_ID) in(@sArea)
则没有记录返回请问应该怎么做?
T_FLOOR
floor_id int //楼层编号
area_id int //楼层所属区域
floor_desc varchar(20)内容为
floor_id area_id floor_desc
1 21 五楼
2 22 四楼
3 21 四楼
4 22 一楼
5 23 二楼我想在存储过程中根据area_id 查询楼层信息
如 我输入参数是 21,23
得到
1 21 五楼
3 21 四楼
5 23 二楼我使用
declare @sArea varchar(20)
set @sArea='21,23'
SELECT floor_id FROM T_FLOOR WHERE area_id in (@sArea)
报错 将 varchar 值 '21,23' 转换为数据类型为 int 的列时发生语法错误。如果使用
declare @sArea varchar(20)
set @sArea='21,23'
select * from t_floor where convert(varchar(5),AREA_ID) in(@sArea)
则没有记录返回请问应该怎么做?
set @sArea='21,23'
declare @sql varchar(200)
set @sql = 'SELECT floor_id FROM T_FLOOR WHERE area_id in (' + @sArea + ')'
exec(@sql)
set @sArea='21,23'
exec('select * from t_floor where AREA_ID in('+@sArea+')')
insert into @t select
1, 21, '五楼'
union all select
2, 22, '四楼'
union all select
3, 21, '四楼'
union all select
4, 22, '一楼'
union all select
5, 23, '二楼'declare @id table(p int)
insert @id values(21)
insert @id values(22)
SELECT * FROM @t WHERE area_id in (select * from @id)
set @sArea='21,23'
select * from t_floor where charindex(convert(varchar,AREA_ID), @sArea) > 0
用动态语句
exec ('SELECT floor_id FROM T_FLOOR WHERE area_id in ('+@sArea+')')