sqlserver中想用in判断范围,但只能输入一个字符串参数,如何拆字符串然后动态拼in()里面的内容呢?

shi214785 2012-02-24 07:00:38
请问,我在sqlserver中想用in判断范围进行批量删除,但只能输入一个字符串参数,如何拆字符串然后动态拼in()里面的内容呢?

字符串内容可能会是 'a','b','c','d' 这种类型的
也可能是 1,2,3,4,5 这种类型的,我现在想不出传进去的参数如何拆分在组装能编程in()能正确识别的结构

请朋友们帮帮忙,谢谢哈!!
...全文
325 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhabc桦仔 2012-11-12
  • 打赏
  • 举报
回复
刚好对我有用先收藏了
dawugui 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 shi214785 的回复:]
请问,我在sqlserver中想用in判断范围进行批量删除,但只能输入一个字符串参数,如何拆字符串然后动态拼in()里面的内容呢?

字符串内容可能会是 'a','b','c','d' 这种类型的
也可能是 1,2,3,4,5 这种类型的,我现在想不出传进去的参数如何拆分在组装能编程in()能正确识别的结构

请朋友们帮帮忙,谢谢哈!!
[/Quote]
select * from tb where charindex(','+col+',',',' + @str+',') > 0

select * from tb where ',' + @str+',' like '%,'+col+',%'
叶子 2012-02-24
  • 打赏
  • 举报
回复
--不用拆分也可以作为条件。
declare @T table (id int,col varchar(1))
insert into @T
select 1,'a' union all
select 2,'b' union all
select 3,'c' union all
select 4,'d'


declare @sql varchar(10)
set @sql='2,4'

select * from @T where charindex(','+ltrim(id)+',',','+@sql+',')>0
/*
id col
----------- ----
2 b
4 d
*/
百年树人 2012-02-24
  • 打赏
  • 举报
回复
declare @s varchar(100)
set @s='a,b,c,d'
select * from tb where charindex(','+col+',',','+@s+',')>0

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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