alter function col_rev( @i_version int, -- Excel 版本号 @i_col int -- 字段号(数值表示) ) returns varchar(20) as begin declare @v_devide int; declare @v_mod int; declare @v_col int; declare @str nvarchar(20); set @v_col=@i_col; set @str = ''; if @i_version=2003 and @v_col<=256 -- Excle 2003 最多256列 begin if @v_col>26 begin set @str= (CASE when (@v_col%26)=0 then char(ascii('A')+(@v_col/26)-2)+'Z' ELSE char(ascii('A')+(@v_col/26)-1)+char(ascii('A')+(@v_col%26)-1) end); end else if @v_col=26 begin set @str = 'Z'; end else begin select @str=char(ascii('A')+(@v_col%26)-1); end end return @str; end select '76' AS C1, dbo.col_rev(2003,76) as col UNION ALL select '77' AS C1, dbo.col_rev(2003,77) as col UNION ALL select '78' AS C1, dbo.col_rev(2003,78) as col UNION ALL select '79' AS C1, dbo.col_rev(2003,79);
比较古老的方法了,在网上看见了,COPY过来备注一下。