--语法没问题。 select * from M where mb between 'mb1' and 'mb20'
DECLARE @TB TABLE([mb] VARCHAR(3)) INSERT @TB SELECT 'mb1' UNION ALL SELECT 'mb2' UNION ALL SELECT 'mb3' UNION ALL SELECT 'mb4' UNION ALL SELECT 'mb5'DECLARE @TA TABLE([mb] VARCHAR(3)) declare @mb int select @mb=1 while @mb <=10begin INSERT @TA select * from @TB where mb='mb'+ltrim(@mb)+'' set @mb=@mb+1 end SELECT * FROM @TA /* mb ---- mb1 mb2 mb3 mb4 mb5 */
select * from M where mb between 'mb1' and 'mb20'
INSERT @TB
SELECT 'mb1' UNION ALL
SELECT 'mb2' UNION ALL
SELECT 'mb3' UNION ALL
SELECT 'mb4' UNION ALL
SELECT 'mb5'DECLARE @TA TABLE([mb] VARCHAR(3))
declare @mb int
select @mb=1
while @mb <=10begin
INSERT @TA
select * from @TB where mb='mb'+ltrim(@mb)+''
set @mb=@mb+1
end SELECT * FROM @TA
/*
mb
----
mb1
mb2
mb3
mb4
mb5
*/
insert #T select 'mb1'
insert #T select 'mb2'
insert #T select 'mb3'
insert #T select 'mb4'
insert #T select 'mb5'
insert #T select 'mb6'
insert #T select 'mb7'
insert #T select 'mb8'
insert #T select 'mb9'declare @mb int,@s nvarchar(1000)
select @mb=1,@s=''
while @mb <=5
select @s=@s+',''mb'+rtrim(@mb)+'''',@mb=@mb+1
set @s=stuff(@s,1,1,'')
exec('select * from #T where mb in('+@s+')')
select * from M where [mb]<='mb10'
呵呵