Mathematical User-Defined Functions



Introduction

Mathematical UDFs

  • Factorial

  • PercentFrom

  • PercentValue

  • Degree

  • Allocation

  • Combination

  • Introduction

    I would like to write the series of articles about useful User-Defined
    Functions grouped by the following categories:

  • Date and Time User-Defined Functions

  • Mathematical User-Defined Functions

  • Metadata User-Defined Functions

  • Security User-Defined Functions

  • String User-Defined Functions

  • System User-Defined Functions

  • Text and Image User-Defined Functions
  • In this article, I wrote some useful Mathematical User-Defined
    Functions.

    Mathematical UDFs


    These scalar User-Defined Functions perform a calculation, usually
    based on input values provided as arguments, and return a numeric
    value.

    To download Mathematical User-Defined Functions click this link:
    Download Mathematical UDFs


    Factorial


    Returns the factorial value of the given number.

    Syntax

    Factorial ( number )

    Arguments

    number

    Is the integer value.

    Return Types

    bigint

    The function’s text:


    CREATE FUNCTION Factorial
    ( @number int )
    RETURNS bigint
    AS
    BEGIN
    DECLARE @i int, @factorial bigint
    IF @number > 20 RETURN 0
    SET @i = 1
    SET @factorial = 1
    WHILE @i <= @number BEGIN SET @factorial = @factorial * @i SET @i = @i + 1 END RETURN @factorial END GO

    Examples

    This example returns the factorial value of the number 5:


    SELECT dbo.Factorial(5)
    GO

    Here is the result set:

    ——————–
    120

    (1 row(s) affected)


    PercentFrom


    Returns the percent of the expression1 in the expression2.

    Syntax

    PercentFrom ( expression1, expression2 )

    Arguments

    expression1

    Is an expression of the exact numeric or approximate numeric
    data type category.

    expression2

    Is an expression of the exact numeric or approximate numeric
    data type category.

    Return Types

    float

    The function’s text:


    CREATE FUNCTION PercentFrom
    ( @expression1 SQL_VARIANT,
    @expression2 SQL_VARIANT )
    RETURNS float
    AS
    BEGIN
    RETURN (CAST(@expression1 AS FLOAT)/CAST(@expression2 AS FLOAT)*100)
    END
    GO

    Examples

    This example returns the percent of the 137 in the 273:


    SELECT dbo.PercentFrom(137, 273)
    GO

    Here is the result set:

    —————————————————–
    50.183150183150182

    (1 row(s) affected)


    PercentValue


    Returns the percent’s value from the given expression for the
    given percent.

    Syntax

    PercentValue ( expression, percent )

    Arguments

    expression

    Is an expression of the exact numeric or approximate numeric
    data type category.

    percent

    Is the integer value.

    Return Types

    float

    The function’s text:


    CREATE FUNCTION PercentValue
    ( @expression SQL_VARIANT,
    @percent int )
    RETURNS float
    AS
    BEGIN
    RETURN ( CAST(@expression AS FLOAT) / 100 * @percent )
    END
    GO

    Examples

    Returns the percent’s value from the number 137 for the percent 11:


    SELECT dbo.PercentValue (137, 11)
    GO

    Here is the result set:

    —————————————————–
    15.07

    (1 row(s) affected)


    Degree


    Returns the degree for the given number and degree value.

    Syntax

    Degree ( number, degree )

    Arguments

    number

    Is an expression of the exact numeric or approximate numeric
    data type category.

    degree

    Is the integer value.

    Return Types

    float

    The function’s text:


    CREATE FUNCTION Degree
    ( @number SQL_VARIANT,
    @degree int )
    RETURNS float
    AS
    BEGIN
    DECLARE @i int, @res float
    SET @i = 1
    SET @res = 1
    WHILE @i <= @degree BEGIN SET @res = CAST(@number AS FLOAT) * @res SET @i = @i + 1 END RETURN @res END GO

    Examples

    Returns the degree 4 for the number 3:


    SELECT dbo.Degree(3, 4)
    GO

    Here is the result set:

    —————————————————–
    81.0

    (1 row(s) affected)


    Allocation


    Returns the allocation from the m by n.

    Syntax

    Allocation ( m, n )

    Arguments

    m

    Is the integer value.

    n

    Is the integer value.

    Return Types

    int

    The function’s text:


    CREATE FUNCTION Allocation
    ( @m int,
    @n int )
    RETURNS int
    AS
    BEGIN
    RETURN (dbo.Factorial(@m)/dbo.Factorial(@m-@n))
    END
    GO

    Examples

    Returns the allocation from the 5 by 3:


    SELECT dbo.Allocation(5,3)
    GO

    Here is the result set:

    ———–
    60

    (1 row(s) affected)


    Combination


    Returns the combination from the m by n.

    Syntax

    Combination ( m, n )

    Arguments

    m

    Is the integer value.

    n

    Is the integer value.

    Return Types

    int

    The function’s text:


    CREATE FUNCTION Combination
    ( @m int,
    @n int )
    RETURNS int
    AS
    BEGIN
    RETURN (dbo.Factorial(@m)/(dbo.Factorial(@m-@n)*dbo.Factorial(@n)))
    END
    GO

    Examples

    Returns the combination from the 5 by 3:


    SELECT dbo.Combination(5,3)
    GO

    Here is the result set:

    ———–
    10

    (1 row(s) affected)


    »


    See All Articles by Columnist
    Alexander Chigrik

    Alexander Chigrik
    Alexander Chigrik
    I am the owner of MSSQLCity.Com - a site dedicated to providing useful information for IT professionals using Microsoft SQL Server. This site contains SQL Server Articles, FAQs, Scripts, Tips and Test Exams.

    Get the Free Newsletter!

    Subscribe to Cloud Insider for top news, trends & analysis

    Latest Articles