Как определить пустой уникальный идентификатор в SQL Server 2005? - PullRequest
17 голосов
/ 19 декабря 2009

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

00000000-0000-0000-0000-000000000000.

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

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

Если я получу значение, подобное этому 00000000-0000-0000-0000-000000000000 Я получу Y

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

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

Ответы [ 5 ]

33 голосов
/ 19 декабря 2009

сравнить с

cast(cast(0 as binary) as uniqueidentifier)

4 голосов
/ 19 декабря 2009

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

DECLARE @EmptyGuid UniqueIdentifier
SET @EmptyGuid = '00000000-0000-0000-0000-000000000000'
3 голосов
/ 19 декабря 2009
IF (@TheGuid = '00000000-0000-0000-0000-000000000000')
    SELECT 'Do Y'
ELSE
    SELECT 'Do X'
1 голос
/ 13 ноября 2015

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

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

OR

DECLARE @EmptyGuid UNIQUEIDENTIFIER
SET @EmptyGuid = 0x0

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

IF @parameter = @EmptyGuid
    DO Y
ELSE
    DO X

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

1 голос
/ 11 ноября 2014

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

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