表usersID username level
1 小红 2
2 小明 2
3 小刚 1
4 小张 1
DECLARE @A VARCHAR(max)
SET @A='''小红'',''小明'',''小刚'',''小张'''
SELECT @ADECLARE @Uname VARCHAR(max)
DECLARE @ID VARCHAR(max)
SELECT @Uname=ISNULL(@Uname+',','')+RTRIM([username]),
@ID=ISNULL(@ID+',','')+RTRIM([id])
FROM [users]
WHERE [level]=2 AND [username] IN (@A)SELECT @Uname+',',@ID+',' 得到@Uname和@ID
我还要做别的操作!上一个帖子有人给我发了一个解决方案:
DECLARE @idlist varchar(100)
SET @idlist='''a'',''b''''a'',''c'''--拼接并执行动态Transact-SQL语句
EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')')
GO这个不适用我,或者怎么改一下形式就能适用于我的程序了呢?
1 小红 2
2 小明 2
3 小刚 1
4 小张 1
DECLARE @A VARCHAR(max)
SET @A='''小红'',''小明'',''小刚'',''小张'''
SELECT @ADECLARE @Uname VARCHAR(max)
DECLARE @ID VARCHAR(max)
SELECT @Uname=ISNULL(@Uname+',','')+RTRIM([username]),
@ID=ISNULL(@ID+',','')+RTRIM([id])
FROM [users]
WHERE [level]=2 AND [username] IN (@A)SELECT @Uname+',',@ID+',' 得到@Uname和@ID
我还要做别的操作!上一个帖子有人给我发了一个解决方案:
DECLARE @idlist varchar(100)
SET @idlist='''a'',''b''''a'',''c'''--拼接并执行动态Transact-SQL语句
EXEC('SELECT * FROM tbname WHERE fdname IN('+@idlist+')')
GO这个不适用我,或者怎么改一下形式就能适用于我的程序了呢?
SET @A='''小红'',''小明'',''小刚'',''小张'''
SELECT @ADECLARE @Uname VARCHAR(max)
DECLARE @ID VARCHAR(max)
SELECT @Uname=ISNULL(@Uname+',','')+RTRIM([username]),
@ID=ISNULL(@ID+',','')+RTRIM([id])
FROM [users]
--用charindex*****************************************
WHERE [level]=2 AND charindex([username],@A)>0
--***************************************************
SELECT @Uname+',',@ID+','
@ID=ISNULL(@ID+',','')+RTRIM([id])
FROM [users]
WHERE [level]=2 AND [username] IN ('小红','小明')这样我得到的结果就是
无列名 无列名
小红,小明, 1,2,其实就是将in里的东西参数化.用@A代替2楼的用charindex我试了,不行!
charindex([username],@A)>0
这块copy过去的,改了一下
charindex(RTRIM([username]),@A)>0我数据的问题.就是不知道charindex的效率如何