Question

Je reçois uniqueidentifier dans une procédure stockée qui ressemble à ceci

00000000-0000-0000-0000-000000000000.

Cela semble être une chose simple, mais comment peut identifier que c'est un uniqueidentifier vide?

Si je reçois une valeur comme ce DDB72E0C-FC43-4C34-A924-741445153021 je veux faire X

Si je reçois une valeur comme ce que je fais 00000000-0000-0000-0000-000000000000 Y

Y at-il une façon plus élégante puis compter les zéros?

Merci d'avance

Était-ce utile?

La solution

comparer à

cast(cast(0 as binary) as uniqueidentifier)

Autres conseils

Il suffit de créer une variable EmptyGuid et comparer à ce que:

DECLARE @EmptyGuid UniqueIdentifier
SET @EmptyGuid = '00000000-0000-0000-0000-000000000000'
IF (@TheGuid = '00000000-0000-0000-0000-000000000000')
    SELECT 'Do Y'
ELSE
    SELECT 'Do X'

Cela fonctionne également.

DECLARE @EmptyGuid UNIQUEIDENTIFIER = CONVERT(UNIQUEIDENTIFIER, 0x0);  
SELECT @EmptyGuid

La meilleure solution est d'utiliser une constante pour le GUID vide

DECLARE @EmptyGuid UNIQUEIDENTIFIER
SET @EmptyGuid = '00000000-0000-0000-0000-000000000000'

ou

DECLARE @EmptyGuid UNIQUEIDENTIFIER
SET @EmptyGuid = 0x0

et on les compare simplement

IF @parameter = @EmptyGuid
    DO Y
ELSE
    DO X

Remarque: vous n'avez pas besoin d'utiliser des moulages et convertis

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top