2009-12-18 12 views
15

obtengo un uniqueidentifier en un procedimiento almacenado que se ve así¿Cómo identifico un identificador único en blanco en SQL Server 2005?

00000000-0000-0000-0000-000000000000.

Esto parece una cosa simple, pero ¿cómo se puede identificar que este es un espacio en blanco uniqueidentifier?

Si consigo un valor como esto DDB72E0C-FC43-4C34-A924-741445153021 quiero hacer X

Si consigo un valor como esto 00000000-0000-0000-0000-000000000000 hago Y

¿Existe una forma más elegante luego contar los ceros?

Gracias de antemano

Respuesta

31

comparan con

cast(cast(0 as binary) as uniqueidentifier) 

?

+0

¡Mi amigo eres genio! – codingguy3000

+0

Elegante. +1 a usted señor – Meff

4

Basta con crear una variable EmptyGuid y comparar con lo siguiente:

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

funciona esto también.

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

La pregunta fue sobre SQL-Server 2005, la tuya funcionará a partir de 2008. – bummi

1

mejor solución es utilizar una constante para el GUID vacío

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

O

DECLARE @EmptyGuid UNIQUEIDENTIFIER 
SET @EmptyGuid = 0x0 

y que acaba de ellos se compara

IF @parameter = @EmptyGuid 
    DO Y 
ELSE 
    DO X 

Nota: usted don' Necesito usar moldes y conversiones

Cuestiones relacionadas