Skip to content

Files

Latest commit

39beebe · Sep 5, 2019

History

History

User_Defined_Function

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
May 25, 2015
Apr 19, 2016
Sep 5, 2019
Jul 23, 2019
Jul 23, 2019
Mar 30, 2019
Jul 10, 2019
Feb 13, 2019
Mar 30, 2019
Jul 6, 2019
May 25, 2015
Aug 26, 2016
Mar 21, 2017
Jun 7, 2017
Jun 7, 2017
May 25, 2015
Sep 15, 2016
Dec 13, 2017
Feb 22, 2017
Mar 9, 2017
May 25, 2015
Jun 7, 2017
May 25, 2015
Jun 9, 2017
Mar 9, 2017
Sep 6, 2016
Sep 23, 2017
May 25, 2015
Nov 17, 2016
Feb 22, 2017
Feb 20, 2016
Feb 20, 2016
Sep 23, 2017
Mar 16, 2018
Mar 24, 2017
Mar 24, 2017
May 5, 2017
Sep 16, 2017
May 25, 2015
Mar 13, 2019
May 25, 2015
Feb 22, 2017
May 4, 2016
Feb 21, 2017
Feb 21, 2017
Sep 29, 2017
May 25, 2015
May 25, 2015
May 25, 2015
May 25, 2015

README.md

Microsoft SQL Server functions

Start all functions from if exist statement:

IF OBJECT_ID('dbo.udf_FunctionName', 'FN') IS NULL
EXECUTE ('CREATE FUNCTION dbo.udf_FunctionName() RETURNS INT AS BEGIN RETURN 1 END;');
GO


ALTER FUNCTION dbo.udf_FunctionName(

It helps to save all grants for function (analog CREATE OR REPLACE PROCEDURE in Oracle).

Author: Alan Burstein
Original link: http://www.sqlservercentral.com/scripts/T-SQL/117890/
Tested on SQL Server version: 2008/2012/2014/2016
Purpose: Given a string (@String) and a pattern (@Pattern) of characters to remove, remove the patterned characters from the string.
Usage:

--===== Basic Syntax Example
 SELECT CleanedString 
 FROM dbo.udf_PatExclude8K(@String, @Pattern);

--===== Remove all but Alpha characters
 SELECT CleanedString
 FROM dbo.SomeTable st
 CROSS APPLY dbo.udf_PatExclude8K(st.SomeString,'%[^A-Za-z]%');

--===== Remove all but Numeric digits
 SELECT CleanedString
 FROM dbo.SomeTable st
 CROSS APPLY dbo.udf_PatExclude8K(st.SomeString,'%[^0-9]%');

Author: Alan Burstein
Original link: http://www.sqlservercentral.com/scripts/Set+Based/139370/
Tested on SQL Server version: 2008/2012/2014/2016
Purpose: Creates up to 100,544,625 sequential numbers beginning with @low and ending with @high. Used to replace iterative methods such as loops, cursors and recursive CTEs to solve SQL problems. Based on Itzik Ben-Gan's getnums function with some tweeks and enhancements and added functionality. The logic for getting rn to begin at 0 or 1 is based comes from Jeff Moden's fnTally function.
Usage:

--===== 1. Using RN (rownumber)
 -- (1.1) The best way to get the numbers 1,2,3...@high (e.g. 1 to 5):
 SELECT RN FROM dbo.udf_GetNumsAB(1,5,1,1);

 -- (1.2) The best way to get the numbers 0,1,2...@high-1 (e.g. 0 to 5):
 SELECT RN FROM dbo.udf_GetNumsAB(0,5,1,0);

--===== 2. Using N1
 -- (2.1) To begin with numbers other than 0 or 1 use N1 (e.g. -3 to 3):
 SELECT N1 FROM dbo.udf_GetNumsAB(-3,3,1,1);

 -- (2.2) ROW_NUMBER() is built in. If you want a ROW_NUMBER() include RN:
 SELECT RN, N1 FROM dbo.udf_GetNumsAB(-3,3,1,1);

 -- (2.3) If you wanted a ROW_NUMBER() that started at 0 you would do this:
 SELECT RN, N1 FROM dbo.udf_GetNumsAB(-3,3,1,0);

--===== 3. Using N2 and @gap
 -- (3.1) To get 0,10,20,30...100, set @low to 0, @high to 100 and @gap to 10:
 SELECT N1 FROM dbo.udf_GetNumsAB(0,100,10,1);

 -- (3.2) Note that N2=N1+@gap; this allows you to create a sequence of ranges.
 --       For example, to get (0,10),(10,20),(20,30).... (90,100):
 SELECT N1, N2 FROM dbo.udf_GetNumsAB(0,90,10,1);

 -- (3.3) Remember that a rownumber is included and it can begin at 0 or 1:
 SELECT RN, N1, N2 FROM dbo.udf_GetNumsAB(0,90,10,1);

--===== (4) A real life example using RN, N1 and N2:
 -- Beginning with @StartDate, to generate ranges of weeks that occur between 
 -- @startDate & @EndDate:

Author: Phil Factor
Original link: https://www.simple-talk.com/blogs/2016/02/16/the-luhn-algorithm-in-sql/
Tested on SQL Server version: 2008/2012/2014/2016
Description: The Luhn test is used by most credit card companies to check the basic validity of a credit card number. It is not an anti-fraud measure but a quick check on data corruption. It still allows any digits that are odd or even to be switched in the sequence. Most credit cards are compatible with Luhn algorithm.

  1. It is often applied to SSNs, company organization numbers, and OCR numbers for internet payments. The algorithm is simple.
  2. Take out the spaces from the string containing the credit card numbers
  3. Reverse the string containing the credit card numbers.
  4. Sum every digit whose order in the sequence is an odd number (1,3,5,7 …) to create a partial sum s1
  5. Multiply each even digit by two, and then sum the digits of the number if the answer is greater than nine. (e,g if digit is 8 then 8*2=16, then add the resulting digits: 1+6=7).
  6. Sum the partial sums of the even digits to form s2
  7. if s1 + s2 ends in zero then the original number is in the form of a valid credit card number as verified by the Luhn test.

Author: Phil Factor
Original link: https://www.simple-talk.com/blogs/2016/02/16/the-luhn-algorithm-in-sql/
Tested on SQL Server version: 2008/2012/2014/2016
Description: The Luhn test is used by most credit card companies to check the basic validity of a credit card number. It is not an anti-fraud measure but a quick check on data corruption. It still allows any digits that are odd or even to be switched in the sequence. Most credit cards are compatible with Luhn algorithm.

  1. It is often applied to SSNs, company organization numbers, and OCR numbers for internet payments. The algorithm is simple.
  2. Take out the spaces from the string containing the credit card numbers
  3. Reverse the string containing the credit card numbers.
  4. Sum every digit whose order in the sequence is an odd number (1,3,5,7 …) to create a partial sum s1
  5. Multiply each even digit by two, and then sum the digits of the number if the answer is greater than nine. (e,g if digit is 8 then 8*2=16, then add the resulting digits: 1+6=7).
  6. Sum the partial sums of the even digits to form s2
  7. if s1 + s2 ends in zero then the original number is in the form of a valid credit card number as verified by the Luhn test.