I have been doing this operation with the LIKE operator in the past and have never thought of the PATINDEX operator. Both ways work well, i really can't find a performance difference between the two. Here are my two final functions. Thanks for putting this out there!
CREATE FUNCTION dbo.IsAlphaNumeric2(
@input VARCHAR(MAX)
)
RETURNS BIT
AS
BEGIN
DECLARE @result BIT = 1 -- default result to true
IF (@input LIKE '%[^a-Z,0-9,'' '']%')
BEGIN
SET @result = 0 -- found a non-alphanumeric character
END
RETURN @result -- return result
END
CREATE FUNCTION dbo.IsAlphaNumeric3(
@input VARCHAR(MAX)
)
RETURNS BIT
AS
BEGIN
DECLARE @result BIT = 1 -- default result to true
IF (PATINDEX('%[^a-Z,0-9,'' '']%', @input) > 0)
BEGIN
SET @result = 0 -- found a non-alphanumeric character
END
RETURN @result -- return result
END
-Eric