SQL Functions - factorial

前端 未结 12 1473
傲寒
傲寒 2020-11-30 14:55

I am a beginner in SQL Functions. What is the best way to create a function for factorial in SQL Server- Say 10!

12条回答
  •  情歌与酒
    2020-11-30 15:44

    A non recursive way

    ;With Nums As
    (
    select ROW_NUMBER() OVER (ORDER BY (SELECT 0)) AS RN
    FROM sys.objects
    )
    SELECT  POWER(10.0, SUM(LOG10(RN)))
    FROM Nums
    WHERE RN <= 10
    

    And a recursive way

    declare @target int
    set @target=10;
    
    WITH N AS
         (SELECT 1 AS i,
               1 AS f
    
         UNION ALL
    
         SELECT i+1,
                f*(i+1)
         FROM   N
         WHERE  i < @target
         )
    SELECT f FROM N
    WHERE i=@target
    

提交回复
热议问题