2011-01-13 202 views

回答

6

您可以将现有的逻辑只是转换成T-SQL标量函数,就像这样:

CREATE FUNCTION dbo.fnColumnNameFromIndex(@i int) 
RETURNS varchar(3) 
AS 
BEGIN 
DECLARE @dividend int, @letters varchar(3), @modulo int 
    SET @dividend = @i 
    SET @letters = '' 

    WHILE @dividend > 0 
    BEGIN 
     SET @modulo = (@dividend - 1) % 26 
     SET @letters = CHAR(65 + @modulo) + @letters 
     SET @dividend = CONVERT(int, (@dividend - @modulo)/26) 
    END 

    RETURN @letters; 
END 
GO 

这样称呼它:

SELECT dbo.fnColumnNameFromIndex(2000)

...承认没有设置逻辑,但我不认为这是一个设置逻辑问题。