2010-06-22 17 views

cevap

74
SELECT CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER) 

Boş kılavuzunuzu iade etmelidir.

... hatta daha kısa bir döküm tasarrufu: Yani

SELECT CAST(0x0 AS UNIQUEIDENTIFIER) 

, bunun için kontrol etmek boş guid hiç değişmez beri

IF @GuidParam = CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER) 
BEGIN 
    --Guid is empty 
END 
+25

Sen 2 atmalarını yerine 0x0 kullanmak için (uniqueIdentifier AS 0x0) boş bir guid CAST – Robert

+0

@Robert 1 almak için bu alternatif sözdizimi kullanabilirsiniz. – twoleggedhorse

+1

Bu konuda daha iyi bir performansa sahip olan veya "If @Param = '00000000-0000-0000-0000-000000000000'?” –

9

yapardınız diğer bariz bir yoldur hesaplamak yerine 00000000-0000-0000-0000-000000000000'u kullanmanız yeterlidir.

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

Veya, prosedürde, bir sabit olarak hareket için bir parametre ayarlayabilirsiniz eğer:

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

Yoksa sadece yukarıdaki sabit değeri veren bir skaler kullanıcı tanımlı bir işlev oluşturabilir (veya Meiscooldude çözeltisinde olduğu gibi yeniden hesaplar).

1

onu kontrol konusunda ne null:

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

DECLARE @SupplierDataHubId Uniqueidentifier = null

seti @ SupplierDataHubId = (dbo.tblSupplierData dan HubId seçmek nerede fldUpc = '603259049389' YA fldEan = '6032590493895555 ') (@SupplierDataHubId boş değil) başlıyor
print (' yes '); uç

başka baskı

'hayır'