Как определить пустой uniqueidentifier в SQL Server 2005?


Я получаю uniqueidentifier в хранимую процедуру, которая выглядит следующим образом

00000000-0000-0000-0000-000000000000.

Это кажется простой вещью, но как можно определить, что это пустое uniqueidentifier?

Если я получу такое значение DDB72E0C-FC43-4C34-A924-741445153021, я хочу сделать X

Если я получаю такое значение 00000000-0000-0000-0000-000000000000, я делаю Y

Есть ли более элегантный способ, чем подсчет нулей?

Заранее спасибо

5 16

5 ответов:

Сравните с

cast(cast(0 as binary) as uniqueidentifier)

?

Просто создайте переменную EmptyGuid и сравните с ней:

DECLARE @EmptyGuid UniqueIdentifier
SET @EmptyGuid = '00000000-0000-0000-0000-000000000000'
IF (@TheGuid = '00000000-0000-0000-0000-000000000000')
    SELECT 'Do Y'
ELSE
    SELECT 'Do X'

Лучшим решением является использование константы для пустого GUID

DECLARE @EmptyGuid UNIQUEIDENTIFIER
SET @EmptyGuid = '00000000-0000-0000-0000-000000000000'

Или

DECLARE @EmptyGuid UNIQUEIDENTIFIER
SET @EmptyGuid = 0x0

И вы просто сравниваете их

IF @parameter = @EmptyGuid
    DO Y
ELSE
    DO X

Примечание: вам не нужно использовать приведения и преобразования

Это тоже работает.

DECLARE @EmptyGuid UNIQUEIDENTIFIER = CONVERT(UNIQUEIDENTIFIER, 0x0);  
SELECT @EmptyGuid