Ответ 1
сравните с
cast(cast(0 as binary) as uniqueidentifier)
?
Я получаю uniqueidentifier
в хранимую процедуру, которая выглядит как
00000000-0000-0000-0000-000000000000
.
Это похоже на простую вещь, но как определить, что это пустой uniqueidentifier
?
Если я получаю такое значение, как DDB72E0C-FC43-4C34-A924-741445153021
, я хочу сделать X
Если я получаю такое значение 00000000-0000-0000-0000-000000000000
, я делаю Y
Есть ли более элегантный способ подсчета нулей?
Заранее спасибо
сравните с
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