在工作由于业务的特殊需求,需要把一些数据记录排序序号,转化为英文字母的顺序。如:1,2,3,4,5,6 转化为A,B,C,D,E.....等一系列的顺序。
起初是用循环的,但要变成易与扩展,适应尽量多的排序,从而形成多的英文字母排序。所以几经改良,用了递归来调用,以此来记录下。
主要sql实现的
----------------------------------------------
--Version 20170309--Create by:shoupifeng--Craate on :2017-03-09--主要根据数据字排序数字,转化为大写英文字母顺序--如:1,2,3,4,5 转化为 A,B,C,D,E--0是不支持转化的--SELECT DBO.FN_NUMBER_TO_LETTER(1)-----------------------------------------------CREATE FUNCTION [dbo].[FN_NUMBER_TO_LETTER](@ROWNUM int)RETURNS NVARCHAR(MAX) ASBEGIN DECLARE @RESULT NVARCHAR(MAX); SET @RESULT='' IF @ROWNUM>0 BEGIN DECLARE @YUSHU INT; DECLARE @SHANG INT; SET @YUSHU= @ROWNUM%26 SET @SHANG=@ROWNUM/26 IF @YUSHU=0 BEGIN SET @RESULT=@RESULT+CHAR(90) SET @SHANG=@SHANG-1 END; ELSE BEGIN SET @RESULT=@RESULT+CHAR(64+@YUSHU) END; IF @SHANG>0 BEGIN SET @RESULT=dbo.[FN_NUMBER_TO_LETTER](@SHANG)+@RESULT END; END; ELSE BEGIN SET @RESULT=CAST(@ROWNUM AS NVARCHAR(20)) END;RETURN @RESULT;
ENDGO