慕桂英546537
一开始看到想用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_Tablecreate 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);endinsert into #temp_Table values(@str);
--列出临时表的数据,然后再用联表查询select * from #temp_Table
select Id from testwhere 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 testwhere name in (select Name from #temp_Table)) AS T
select @str3