4 回答
TA贡献1848条经验 获得超10个赞
一开始看到想用in的,好想拼接出来。最后试了好久不行。
下面是我测试可行的方法
create table test
( Id int primary key,
Name nvarchar(50)
)
insert into test values(1,'test1');
insert into test values(2,'test2');
insert into test values(3,'test3');
select * from test
declare @str nvarchar(max),@index int,@temp nvarchar(max)
set @str='test1,test2,test3'
--用临时表来存储暂存数据
drop table #temp_Table
create table #temp_Table
(
Name nvarchar(max)
)
--去除左右的空格
set @str=RTRIM(ltrim(@str))
set @index=CHARINDEX(',',@str);
while(@index>0)
begin
set @temp=SUBSTRING(@str,0,@index);
insert into #temp_Table values(@temp)
set @str=SUBSTRING(@str,@index+1,LEN(@str));
set @index=CHARINDEX(',',@str);
end
insert into #temp_Table values(@str);
--列出临时表的数据,然后再用联表查询
select * from #temp_Table
select Id from test
where name in (select Name from #temp_Table)
--输出成这种格式'1,2,3',
declare @str3 nvarchar(max)
select @str3=ISNULL(@str3+',','')+
CAST(Id as nvarchar) from(select Id from test
where name in (select Name from #temp_Table)) AS T
select @str3
TA贡献1830条经验 获得超9个赞
拼接成字符串,然后in,最后exec(@sql)
DECLARE @a VARCHAR(MAX)
DECLARE @sql VARCHAR(MAX)
SET @a='管理员1,管理员2'
set @sql='select * from table where id in('+@a+')'
exec(@sql)
- 4 回答
- 0 关注
- 828 浏览
添加回答
举报