|
|
|
Introduction String UDFs StrIns StrDel StrSeparate StrCHARINDEX StrREPLACE StrREVERSE
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 String User-Defined Functions.
String UDFs
These scalar User-Defined Functions perform an operation on a string input value and return a string or numeric value.
StrIns
Inserts set of characters into another set of characters at a specified starting point.
Syntax StrIns ( character_expression, start, character_expression )
Arguments character_expression - an expression of character data. character_expression can be a constant, variable, or column of character data.
start - an integer value that specifies the location to begin insertion. If start or length is negative, a null string is returned. If start is longer than the first character_expression, a null string is returned.
Return Types nvarchar
The function's text: |
Click here to copy the following block | CREATE FUNCTION StrIns ( @str_1 nvarchar(4000), @start int, @str_2 nvarchar(4000) ) RETURNS nvarchar(4000) AS BEGIN RETURN (STUFF (@str_1, @start, 0, @str_2)) END GO |
Examples This example returns a character string created by inserting the second string starting at position 2 (at b) into the first string. |
Here is the result set:
------------ aijklmnbcdef
(1 row(s) affected)
StrDel
Deletes a specified length of characters at a specified starting point.
Syntax StrDel ( character_expression, start, length )
Arguments character_expression - an expression of character data. character_expression can be a constant, variable, or column of character data.
start - an integer value that specifies the location to begin deletion. If start or length is negative, a null string is returned. If start is longer than the first character_expression, a null string is returned.
length - an integer that specifies the number of characters to delete. If length is longer than the first character_expression, deletion occurs up to the last character in the last character_expression.
Return Types nvarchar
The function's text: |
Click here to copy the following block | CREATE FUNCTION StrDel ( @str_1 nvarchar(4000), @start int, @length int ) RETURNS nvarchar(4000) AS BEGIN RETURN (STUFF (@str_1 , @start, @length, '')) END GO |
Examples This example returns a character string created by deleting three characters from the first string (abcdef) starting at position 2 (at b). |
Here is the result set:
--- aef
(1 row(s) affected)
StrSeparate
Inserts a specified character into the given string after every n-th character (from the end of the string).
Syntax StrSeparate ( character_expression, term, number )
Arguments character_expression - an expression of character data. character_expression can be a constant, variable, or column of character data.
term - a character.
number - an integer.
Return Types nvarchar
The function's text: |
Click here to copy the following block | CREATE FUNCTION StrSeparate ( @str nvarchar(4000), @term char(1), @number int ) RETURNS nvarchar(4000) AS BEGIN DECLARE @i int, @j int, @stepcount int IF (len(@str) <= @number) RETURN @str SELECT @str =REVERSE(@str), @i = 1, @j = @number + 1, @stepcount = len(@str) / @number WHILE @i <= @stepcount BEGIN SET @str = ISNULL(STUFF(@str, @j, 0, @term), @str) SET @j = @j + @number + 1 SET @i = @i + 1 END SET @str = REVERSE(@str) RETURN @str END GO |
Examples This example returns a character string created by inserting the space character after every three characters of the specified string (from the end of the string). |
Here is the result set:
---------- 12 345 678
(1 row(s) affected)
StrCHARINDEX
Returns the starting position of the n-th entering of the specified expression in a character string.
Syntax CHARINDEX ( expression1, expression2, start_location, number)
Arguments expression1 - an expression containing the sequence of characters to be found. expression1 is an expression of the short character data type category.
expression2 - an expression, usually a column searched for the specified sequence. expression2 is of the character string data type category.
start_location - the character position to start searching for expression1 in expression2. If start_location is a negative number, or is zero, the search starts at the beginning of expression2.
number - an integer.
Return Types int
The function's text: |
Click here to copy the following block | CREATE FUNCTION StrCHARINDEX ( @expression1 nvarchar(4000), @expression2 nvarchar(4000), @start_location int = 0, @number int ) RETURNS int AS BEGIN DECLARE @i int, @position int SET @i = 1 WHILE (@i <= @number) AND (CHARINDEX(@expression1, @expression2, @start_location) <> 0) BEGIN SET @position = CHARINDEX(@expression1, @expression2, @start_location) SET @expression2 = STUFF(@expression2, CHARINDEX(@expression1, @expression2, @start_location), len(@expression1), space(len(@expression1))) SET @i = @i + 1 END RETURN @position END GO |
Here is the result set:
----------- 7
(1 row(s) affected)
StrREPLACE
Replaces all occurrences of the second given string expression in the first string expression with a third expression starting from the start_location position.
Syntax REPLACE('string_expression1','string_expression2','string_expression3',@start_location)
Arguments 'string_expression1' - the string expression to be searched.
'string_expression2' - the string expression to try to find.
'string_expression3' - the replacement string expression.
start_location - the character position to start replacing.
Return Types nvarchar
The function's text: |
Click here to copy the following block | CREATE FUNCTION StrREPLACE ( @string_expression1 nvarchar(4000), @string_expression2 nvarchar(4000), @string_expression3 nvarchar(4000), @start_location int ) RETURNS nvarchar(4000) AS BEGIN IF (@start_location <= 0) OR (@start_location > len(@string_expression1)) RETURN (REPLACE (@string_expression1, @string_expression2, @string_expression3)) RETURN (STUFF (@string_expression1, @start_location, len(@string_expression1) - @start_location + 1, REPLACE(SUBSTRING (@string_expression1, @start_location, len(@string_expression1) - @start_location + 1), @string_expression2, @string_expression3))) END GO |
Here is the result set:
------------------- 1234567891**45
(1 row(s) affected)
StrREVERSE
Returns the reverse of a character expression starting at the specified position.
Syntax REVERSE ( character_expression, start_location )
Arguments character_expression - an expression of character data. character_expression can be a constant, variable, or column of character data.
start_location - the character position to start reversing.
Return Types nvarchar
The function's text: |
Click here to copy the following block | CREATE FUNCTION StrREVERSE ( @character_expression nvarchar(4000), @start_location int ) RETURNS nvarchar(4000) AS BEGIN IF (@start_location <= 0) OR (@start_location > len(@character_expression)) RETURN (REVERSE(@character_expression)) RETURN (STUFF (@character_expression, @start_location, len(@character_expression) - @start_location + 1, REVERSE(SUBSTRING (@character_expression, @start_location, len(@character_expression) - @start_location + 1)))) END GO |
Here is the result set:
------------------- 129876543
(1 row(s) affected)
|
|
|
|
Submitted By :
Nayan Patel
(Member Since : 5/26/2004 12:23:06 PM)
|
|
|
Job Description :
He is the moderator of this site and currently working as an independent consultant. He works with VB.net/ASP.net, SQL Server and other MS technologies. He is MCSD.net, MCDBA and MCSE. In his free time he likes to watch funny movies and doing oil painting. |
View all (893) submissions by this author
(Birth Date : 7/14/1981 ) |
|
|