Проверьте наличие пустого GUID в SQL - PullRequest
43 голосов
/ 22 июня 2010

Как проверить, является ли аргумент в хранимой процедуре пустым GUID или нет?

Ответы [ 5 ]

98 голосов
/ 22 июня 2010
SELECT CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)

Это должно вернуть ваш пустой гид.

... или даже короче, сохраняя один бросок:

SELECT CAST(0x0 AS UNIQUEIDENTIFIER)

Таким образом, чтобы проверить это, вы должны сделать

IF @GuidParam = CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)
BEGIN
   --Guid is empty
END
12 голосов
/ 22 июня 2010

Поскольку пустой guid никогда не меняется, другой очевидный способ - просто использовать 00000000-0000-0000-0000-000000000000 вместо его вычисления.

If @Param = '00000000-0000-0000-0000-000000000000'
...

Или, если в процедуре, вы можете установить параметр, который будет действовать как константа:

Declare @EmptyGuid uniqueidentifier
Set @EmptyGuid = '00000000-0000-0000-0000-000000000000'

Или вы можете создать скалярную пользовательскую функцию, которая просто возвращает указанное выше постоянное значение (или пересчитывает его, как в решении Meiscooldude).

1 голос
/ 30 декабря 2014

Как насчет проверки, это пусто:

DECLARE @MyId as UNIQUEIDENTIFIER = (SELECT Id FROM dbo.MyTable WHERE ...)
IF @MyId IS NULL
BEGIN
    RAISERROR ('Id is NULL!', 16, 1)
    RETURN
END
0 голосов
/ 06 мая 2019

Использование

DECLARE @param UNIQUEIDENTIFIER = NEWID();
--DECLARE @param UNIQUEIDENTIFIER = '00000000-0000-0000-0000-000000000000'

IF (CONVERT(UNIQUEIDENTIFIER, 0x00)) = @param
    PRINT 'Empty';
ELSE
    PRINT 'Not Empty';
0 голосов
/ 13 августа 2015
DECLARE @SupplierDataHubId  uniqueidentifier=null

 set @SupplierDataHubId=(select HubId from dbo.tblSupplierData where fldUpc='603259049389' OR   fldEan='6032590493895555')
if (@SupplierDataHubId is not null)
 begin                 
 print('yes');
end

else 
print 'no'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...