将 nvarchar 值 'xxx' 转换为数据类型为 int 的列时发生语法错误

库中有两个表table1和table2,其中table2的字段m_id(varchar)对应着table1的id(int)字段,m_id值的格式为"id1,id2,id3,id4...",现在需要将m_id所对应的table1记录全部列出,执行如下SQL语句:

select * from table1 where id in(select m_id from table2 where id=1)

出错:将 nvarchar 值 '1,2,3,4' 转换为数据类型为 int 的列时发生语法错误!

也就是格式转换出错,在网上查了好久,总算有了答案,改为下边形式即可:

declare @sql varchar(200)
Set @sql = (select m_id from table2 where id=1)
Set @sql = N'select * from table1 where id in('+@sql+')'
Exec(@sql)


评论: 0 | 引用: 0 | 查看次数: 7916
发表评论
登录后再发表评论!