首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

- 给力一下:解决此题目者,再散200分!该怎么解决

2012-01-31 
-- 给力一下:解决此题目者,再散200分!--http://topic.csdn.net/u/20110407/14/cb4c48ce-5c59-4c7f-892c-f8

-- 给力一下:解决此题目者,再散200分!--
http://topic.csdn.net/u/20110407/14/cb4c48ce-5c59-4c7f-892c-f8507d414cd4.html?61055

[解决办法]
路过了!
[解决办法]

[解决办法]
顶顶更健康……
[解决办法]
单纯接分
[解决办法]
进来学习的~~~
[解决办法]
纯洁的围观群众偶遇
[解决办法]
接点水分儿~~~
[解决办法]
.........
[解决办法]
单纯接分
[解决办法]

探讨

单纯接分

[解决办法]
-- =============================================
-- Create scalar function (FN)
-- =============================================
IF EXISTS (SELECT *
FROM sysobjects
WHERE name = N'GetExcelColumnTitle')
DROP FUNCTION GetExcelColumnTitle
GO

CREATE FUNCTION GetExcelColumnTitle
(@N bigint
)
RETURNS varchar(10)
AS
BEGIN
if @N<=0
return 'Error:01'

declare @Num bigint,@i smallint
declare @C1 char(1),@C2 char(2),@C3 char(1),@C4 char(1),@C5 char(1),@C6 char(1),@C7 char(1),@C8 char(1)

select @Num=@N-1,@i=1

while @Num>25 and @i<8
begin
if @i=1
set @C1= char(65+@Num%26)
else if @i=2
set @C2= char(65+@Num%26)
else if @i=3
set @C3= char(65+@Num%26)
else if @i=4
set @C4= char(65+@Num%26)
else if @i=5
set @C5= char(65+@Num%26)
else if @i=6
set @C6= char(65+@Num%26)
else if @i=7
set @C7= char(65+@Num%26)
set @Num=(@Num/26)-1
set @i = @i+1
end

if @i>8
return 'Error:02'
else if @i=1
set @C1= char(65+@Num%26)
else if @i=2
set @C2= char(65+@Num%26)
else if @i=3
set @C3=char(65+@Num%26)
else if @i=4
set @C4= char(65+@Num%26)
else if @i=5
set @C5= char(65+@Num%26)
else if @i=6
set @C1= char(65+@Num%26)
else if @i=7
set @C7= char(65+@Num%26)
else if @i=8
set @C8= char(65+@Num%26)

return case when @i=1 then @C1
when @i=2 then @C2+@C1
when @i=3 then @C3+@C2+@C1
when @i=4 then @C4+@C3+@C2+@C1
when @i=5 then @C5+@C4+@C3+@C2+@C1
when @i=6 then @C6+@C5+@C4+@C3+@C2+@C1
when @i=7 then @C7+@C6+@C5+@C4+@C3+@C2+@C1
when @i=8 then @C8+@C7+@C6+@C5+@C4+@C3+@C2+@C1
else 'Error:03'
end
END
GO
-- =============================================
-- Example to execute function
-- =============================================
SELECT dbo.GetExcelColumnTitle(703)
--結果:
--AAA
GO

-- 行,谁第一个做出来,我另开一个技术版的给200分!
上述函數可以實現你的要求,3位以下驗算過,但高位數未驗證。兌現承諾,給技術分200分。
[解决办法]

[解决办法]
楼主给力,接分啦
[解决办法]
路过标记
[解决办法]
纯属无聊,微软会让这东西有8位的列?
------解决方案--------------------


标题党!!!
[解决办法]

探讨
-- =============================================
-- Create scalar function (FN)
-- =============================================
IF EXISTS (SELECT *
FROM sysobjects
WHERE name = N'GetExcelCol……

[解决办法]
探讨
引用:

单纯接分

单纯接分~

[解决办法]
SQL code
create FUNCTION [dbo].[calcpage](@value int)RETURNS varchar(100)ASbegindeclare @v1 intdeclare @v2 intdeclare @out varchar(100)declare @temp table (id [int] IDENTITY(1,1) NOT NULL,number [int] not null)select @v2=@valuewhile (@value>=26)begin    select @v1=@value%26,@v2=@value/26,@value=@v2    if @v1=0    begin        set @v1=26        set @value=@value-1    end        insert into @temp        select @v1end        insert into @temp        select @valueset @out=''select @out=@out+substring('ABCDEFGHIJKLMNOPQRSTUVWXYZ',number,1)  from @temp order by id desc  return @outend
[解决办法]
SQL 2008版本的,不复杂,其实就是26进制与10进制的互转问题。


SQL code
/****** Object:  UserDefinedFunction [dbo].[GetRowCharFromNum]    Script Date: 04/08/2011 17:09:04 ******/IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetRowCharFromNum]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))DROP FUNCTION [dbo].[GetRowCharFromNum]GOUSE [master]GO/****** Object:  UserDefinedFunction [dbo].[GetRowCharFromNum]    Script Date: 04/08/2011 17:09:04 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOcreate function [dbo].[GetRowCharFromNum](    @rowNum bigint)returns bigintbegindeclare @FullChar char(26)set @FullChar='ABCDEFGHIJKLMNOPQRSTUVWXYZ'declare @result varchar(30),@lptime int,@tmpNum bigint,@sqr bigintset @sqr=LEN(@FullChar)set @lptime=1set @result=''set @tmpNum=@rowNumwhile (@rowNum>=POWER(@sqr,@lptime-1))begin        if(@tmpNum%@sqr=0)    begin        set @result=substring(@FullChar,@sqr,1)+@result        set @tmpNum=@tmpNum/@sqr-1    end    else    begin        set @result=substring(@FullChar,@tmpNum%@sqr,1)+@result        set @tmpNum=@tmpNum/@sqr    end            set @lptime=@lptime+1    endreturn @resultendGO
[解决办法]
学习....
[解决办法]
SQL code
;WITH cte AS(    SELECT TOP(26)        colno = ROW_NUMBER() OVER(ORDER BY GETDATE()),        colname = CHAR(64 + ROW_NUMBER() OVER(ORDER BY GETDATE()))    FROM sys.columns a, sys.columns b),cte_map AS(    SELECT colno, colname FROM cte    UNION ALL    SELECT TOP(230)            colno = ROW_NUMBER() OVER(ORDER BY a.colno, b.colno) + 26,         colname = a.colname + b.colname     FROM cte a, cte b)SELECT * FROM cte_map
[解决办法]

[解决办法]
很难吗?
[解决办法]
支持。
[解决办法]
学习。
[解决办法]
接分来了

热点排行