CREATE FUNCTION dbo.ParseAlphaOnly
(
@string VARCHAR(8000)
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @IncorrectCharLoc SMALLINT
SET @IncorrectCharLoc = PATINDEX('%[^A-Za-z]%', @string)
WHILE @IncorrectCharLoc > 0
BEGIN
SET @string = STUFF(@string, @IncorrectCharLoc, 1, '')
SET @IncorrectCharLoc = PATINDEX('%[^A-Za-z]%', @string)
END
SET @string = @string
RETURN @string
END
GO
CREATE FUNCTION dbo.ParseAlphaNumbersOnly
(
@string VARCHAR(8000)
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @IncorrectCharLoc SMALLINT
SET @IncorrectCharLoc = PATINDEX('%[^0-9A-Za-z]%', @string)
WHILE @IncorrectCharLoc > 0
BEGIN
SET @string = STUFF(@string, @IncorrectCharLoc, 1, '')
SET @IncorrectCharLoc = PATINDEX('%[^0-9A-Za-z]%', @string)
END
SET @string = @string
RETURN @string
END
GO
CREATE FUNCTION dbo.ParseNumbersOnly
(
@string VARCHAR(8000)
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @IncorrectCharLoc SMALLINT
SET @IncorrectCharLoc = PATINDEX('%[^0-9]%', @string)
WHILE @IncorrectCharLoc > 0
BEGIN
SET @string = STUFF(@string, @IncorrectCharLoc, 1, '')
SET @IncorrectCharLoc = PATINDEX('%[^0-9]%', @string)
END
SET @string = @string
RETURN @string
END
GO
--Test
SELECT dbo.ParseAlphaOnly('ABC”_I+{D[]}4|:e;””5,<.F>/?6')
GO
--Result
ABCIDeF
SELECT dbo.ParseAlphaNumbersOnly('ABC”_I+{D[]}4|:e;””5,<.F>/?6')
GO
--Result
ABCID4e5F6
SELECT dbo.ParseNumbersOnly('ABC”_I+{D[]}4|:e;””5,<.F>/?6')
GO
--Result
456