2009-12-18 6 views
15

Ich bekomme eine uniqueidentifier in eine gespeicherte Prozedur, die so aussiehtWie identifiziere ich eine leere uniqueidentifier in SQL Server 2005?

00000000-0000-0000-0000-000000000000.

Das scheint wie eine einfache Sache, aber wie kann man erkennen, dass dies eine leere uniqueidentifier ist?

Wenn ich ein Wert wie diese DDB72E0C-FC43-4C34-A924-741445153021 bekomme ich X

zu tun, wenn ich einen Wert wie diese 00000000-0000-0000-0000-000000000000 ich Y

Gibt es eine elegantere Möglichkeit erhalten dann die Nullen Zählen?

Vielen Dank im Voraus

Antwort

31

vergleichen zu

cast(cast(0 as binary) as uniqueidentifier) 

?

+0

Mein Freund, du bist Genie! – codingguy3000

+0

Elegant. +1 für dich, mein Herr. – Meff

4

einfach eine EmptyGuid Variable erstellen und vergleichen, gegen das:

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

Dies funktioniert auch.

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

Die Frage war auf SQL-Server 2005, die ab 2008 funktionieren wird. – bummi

1

beste Lösung ist eine Konstante für die leere GUID

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

ODER

DECLARE @EmptyGuid UNIQUEIDENTIFIER 
SET @EmptyGuid = 0x0 

zu verwenden und sie nur

IF @parameter = @EmptyGuid 
    DO Y 
ELSE 
    DO X 

Hinweis vergleichen: Sie don‘ t müssen Casts verwenden und konvertiert

Verwandte Themen