2009-12-18 5 views
15

Je reçois un uniqueidentifier dans une procédure stockée qui ressemble à ceciComment identifier un identificateur unique vide dans SQL Server 2005?

00000000-0000-0000-0000-000000000000.

Cela semble être une chose simple, mais comment peut-on identifier qu'il s'agit d'un blanc uniqueidentifier?

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 00000000-0000-0000-0000-000000000000 je Y

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

Merci à l'avance

Répondre

31

comparer à

cast(cast(0 as binary) as uniqueidentifier) 

?

+0

Mon ami, vous êtes un génie! – codingguy3000

+0

Élégant. +1 à vous monsieur. – Meff

4

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

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

Cela fonctionne aussi.

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

La question était sur SQL-Server 2005 à partir de 2008. – bummi

1

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 vous les comparer juste

IF @parameter = @EmptyGuid 
    DO Y 
ELSE 
    DO X 

Note: vous n » t besoin d'utiliser des plâtres et des convertis