怎样在in()里面使用带逗号的字符串?

HU0L0NG 2007-10-31 07:08:59
DECLARE @sin varchar
SET @sin = '201,202,209,305,1058'
SELECT * FROM TABLE1 WHERE ID IN (@sin) --错误
SELECT * FROM TABLE1 WHERE ID IN (201,202,209,305,1058)

怎样才能在 IN() 里面使用@sin?
...全文
247 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
callcenter油条 2007-10-31
  • 打赏
  • 举报
回复
同老乌龟
fcuandy 2007-10-31
  • 打赏
  • 举报
回复
select * from table1 where charindex(','+rtrim(id)+',' , ','+@sin+',')>0
--或
select * from table1 where ','+rtrim(id)+',' like '%,'+@sin+',%')>0
--或
select * from table1 where patindex('%,'+rtrim(id)+',%' , ','+@sin+',')>0

--动态语句的,或转为union再join的动态语句我就不写了
Limpire 2007-10-31
  • 打赏
  • 举报
回复
高升的也不见得错。
pt1314917 2007-10-31
  • 打赏
  • 举报
回复
支持老乌龟的写法`
dawugui 2007-10-31
  • 打赏
  • 举报
回复
DECLARE @sin varchar
SET @sin = '201,202,209,305,1058'
exec('SELECT * FROM TABLE1 WHERE ID IN (' + @sin + ')')
hb_gx 2007-10-31
  • 打赏
  • 举报
回复
DECLARE @sin varchar(100) 
SET @sin = '201'',''202'',''209'',''305'',''1058'
--SELECT * FROM TABLE1 WHERE ID IN (@sin) --错误
--用动态Sql语句
EXEC ('SELECT * FROM TABLE1 WHERE ID IN (''' + @sin + ''')')


HU0L0NG 2007-10-31
  • 打赏
  • 举报
回复
竟然不能修改帖子
DECLARE @sin varchar(100)

34,575

社区成员

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

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