Mladen Prajdić Blog

Blog about stuff and things and stuff. Mostly about SQL server and .Net

SQL Server IsGuid() function

A simple function that checks if a passed string is a GUID.

create function IsGuid ( @testString varchar(38))
returns int
as
begin
    declare @ret int
    select  @ret = 0,
            @testString = replace(replace(@testString, '{', ''), '}', '')
    if len(isnull(@testString, '')) = 36 and
       @testString NOT LIKE '%[^0-9A-Fa-f-]%' and
       -- check for proper positions of hyphens (-)  
       charindex('-', @testString) = 9 and 
       charindex('-', @testString, 10) = 14 and 
       charindex('-', @testString, 15) = 19 and 
       charindex('-', @testString, 20) = 24 and 
       charindex('-', @testString, 25) = 0
          set @ret = 1
    
    return @ret
end
go
select dbo.IsGuid ('DAB1df7F-BCB8-4935-9364-f140F64EE5F7')
select dbo.IsGuid ('{DAB1df7F-BCB8-4935-9364-f140F64EE5F7}')
go
drop function dbo.IsGuid

Legacy Comments


Seventhnight
2006-03-31
re: SQL Server IsGuid() function
Here's another style using replicate :)


[code]
create function IsGuid ( @testString varchar(38))
returns int
as
begin
declare @ret int

select @ret = 0,
@testString = replace(replace(@testString, '{', ''), '}', '')


Select @ret = case when @testString like
(replicate('[0-9A-Fa-f]',8) + '-' +
replicate('[0-9A-Fa-f]',4) + '-' +
replicate('[0-9A-Fa-f]',4) + '-' +
replicate('[0-9A-Fa-f]',4) + '-' +
replicate('[0-9A-Fa-f]',12)) then 1 else 0 end

return @ret
end
go
select dbo.IsGuid ('DAB1df7F-BCB8-4935-9364-f140F64EE5F7')
select dbo.IsGuid ('{DAB1df7F-BCB8-4935-9364-f140F64EE5F7}')
select dbo.IsGuid ('3DAB1df7F-BCB8-4935-9364-f140F64EE5F7')
go
drop function dbo.IsGuid
[/code]

mladen
2006-03-31
re: SQL Server IsGuid() function
good one!

sanjoy
2007-08-02
re: SQL Server IsGuid() function
very good!

malik
2007-09-05
re: SQL Server IsGuid() function
Very useful! Thank you very much

Fox
2008-03-12
re: SQL Server IsGuid() function
Cool!
Thank you very much

Fox
2008-03-12
re: SQL Server IsGuid() function
Cool!
Thank you very much