今日遇到一个要将数字连接成字符串的问题,原理如下:declare @sql varchar(500)
declare @num int
set @num=6
while (@num<=10)
begin
set @sql=isnull(@sql + ',' , '') +'['+@num+']' //本句报错,不能将[转换为int
set @num=@num+1
end
print @sql需要得到的结果:[6],[7],[8],[9],[10] ,请教该怎么写才能达到这个要求?
declare @num int
set @num=6
while (@num<=10)
begin
set @sql=isnull(@sql + ',' , '') +'['+@num+']' //本句报错,不能将[转换为int
set @num=@num+1
end
print @sql需要得到的结果:[6],[7],[8],[9],[10] ,请教该怎么写才能达到这个要求?
改为
set @sql=isnull(@sql + ',' , '') +'['+CONVERT(VARCHAR(20),@num)+']'
declare @num int
set @num=6
while (@num<=10)
begin
set @sql=isnull(@sql + ',' , '') +'['+convert(varchar,@num)+']'
set @num=@num+1
end
print @sql-->
[6],[7],[8],[9],[10]
set @num=6
while(@num<10)
begin
set @sql=isnull(@sql+',','')+'['+cast(@num as varchar(100))+']'
set @num=@num+1
end
print @sql
declare @sql varchar(500)
declare @num int
set @num=6
while (@num<=10)
begin
set @sql=isnull(@sql + ',' , '') +'['+ltrim(@num)+']' --本句报错,不能将[转换为int
set @num=@num+1
end
print @sql
declare @sql varchar(500)
declare @num int
set @num=6
while (@num<=10)
begin
set @sql=isnull(@sql + ',' , '') +'['+ltrim(@num)+']'
set @num=@num+1
end
print @sql
/*
[6],[7],[8],[9],[10]
*/
改为
set @sql=isnull(@sql + ',' , '') +'['+CONVERT(VARCHAR(20),@num)+']'
declare @sql varchar(50)
select @sql=isnull(@sql+',','')+'['+ltrim(number)+']' from master..spt_values
where number between 6 and 10 and type='p'select @sql
/*
[6],[7],[8],[9],[10]
*/