sql >> Databasteknik >  >> RDS >> Sqlserver

SQL-funktioner - faktoriell

Ett icke-rekursivt sätt

;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

Och ett rekursivt sätt

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 [email protected]


  1. Hur man ställer in maxrekursionsalternativet för en CTE i en tabellvärderad-funktion

  2. Oracle SQL Where-klausul för att hitta datumposter äldre än 30 dagar

  3. Tom PHP-utdata från MySQL-databas för en longblob

  4. Hur använder man mysqli-frågan med en separat connection.php-fil?