Подтвердить что ты не робот

Проверьте наличие пустого GUID в SQL

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

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

Ответ 3

Как насчет проверки: null:

DECLARE @MyId as UNIQUEIDENTIFIER = (SELECT Id FROM dbo.MyTable WHERE ...)
IF @MyId IS NULL
BEGIN
    RAISERROR ('Id is NULL!', 16, 1)
    RETURN
END

Ответ 4

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

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

IF (CONVERT(UNIQUEIDENTIFIER, 0x00)) = @param
    PRINT 'Empty';
ELSE
    PRINT 'Not Empty';

Ответ 5

DECLARE @EmptyGuid UNIQUEIDENTIFIER = 0x0
DECLARE @NonEmpty UNIQUEIDENTIFIER = NEWID()
IF @EmptyGuid = 0x0 PRINT 'Empty'
IF @NonEmpty = 0x0 PRINT 'Empty' ELSE PRINT 'NonEmpty'

Напечатает

Пустой

NonEmpty

Ответ 6

Вы можете сделать пустой Guid следующим образом:

DECLARE @EmptyGuid UNIQUEIDENTIFIER
SET @EmptyGuid = (SELECT CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER))

-- Single result is 00000000-0000-0000-0000-000000000000
SELECT @EmptyGuid

Ответ 7

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'