怎么查询名称对应的Id

DECLARE @a VARCHAR(MAX)
SET @a='管理员1,管理员2'

字符串格式就是这样的,怎么用一个sql查询出管理员1的Id,管理员2的Id

比如管理员1的Id是1 管理员2的Id是2

结果是这样的 '1,2'

怎么才能用sql查询出这个结果呢?

阿晨1998
浏览 829回答 4
4回答

繁华开满天机

虽然能这么干,但貌似不推荐这么干。

慕桂英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

慕标琳琳

拼接成字符串,然后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) 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server