2010-06-22 5 views

Répondre

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

Cela devrait retourner votre guid vide.

... ou encore plus court, sauver un casting:

SELECT CAST(0x0 AS UNIQUEIDENTIFIER) 

Donc, pour vérifier pour cela, vous feriez

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

Vous pouvez utiliser cette syntaxe alternative pour obtenir un CAST guid vide (0x0 UNIQUEIDENTIFIER) – Robert

+0

+1 pour l'utilisation @ Robert 0x0 plutôt que 2 moulages. – twoleggedhorse

+1

ce qui a de meilleures performances celui-ci ou en cochant "If @Param = '00000000-0000-0000-0000-000000000000'?" –

9

Depuis le guid vide ne change jamais, l'autre façon évidente est simplement utiliser 00000000-0000-0000-0000-000000000000 plutôt que de le calculer.

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

Ou, si, dans une procédure, vous pouvez définir un paramètre à agir comme une constante:

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

Ou vous pouvez créer une fonction scalaire définie par l'utilisateur qui retourne simplement la valeur constante au-dessus (ou recalcule comme dans la solution de Meiscooldude).

1

Qu'en est-il le vérifier est nul:

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

set @ SupplierDataHubId = (sélectionnez HubId de dbo.tblSupplierData où fldUpc = '603259049389' OU fldEan = '6032590493895555 ') si (@SupplierDataHubId n'est pas nul) begin
print (' yes '); fin

autre print 'non'