IsGuid or not isGuid, that is the question…


As I was asked about a functionality how to check a string for being of the type GUID and only finding either solution with massive string operations, or using TRY..CATCH trying to CAST a value and then returning the CAST or CONVERT result, I created a new and simple one, based on a simple pattern matching using the LIKE operator:

CREATE FUNCTION dbo.FnIsGuid
(
    @StringToCheck NVARCHAR(36)
)
RETURNS BIT
AS
BEGIN

DECLARE @Result BIT = 0

SELECT @Result = 1
WHERE @StringToCheck LIKE
'[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]-[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]'

RETURN @Result
END

So Krsihna, this one is for you Smiley

-Jens

Comments (2)

  1. wqw says:

    WHERE @StringToCheck LIKE REPLACE('00000000-0000-0000-0000-000000000000', '0', '[0-9a-fA-F]')

  2. Jens K. Suessmeyer says:

    Same Code, better to read. Good suggestion 🙂 Although with both solutions, once created you won´t touch them ever again.

Skip to main content