سؤال

وأنا اتلقى uniqueidentifier إلى إجراء مخزن التي تبدو مثل هذا

و00000000-0000-0000-0000-000000000000.

وهذا يبدو وكأنه شيء بسيط، ولكن كيف يمكن تحديد أن هذا هو uniqueidentifier فارغة؟

إذا أحصل على قيمة مثل هذه DDB72E0C-FC43-4C34-A924-741445153021 أريد أن أفعل X

إذا كنت الحصول على قيمة مثل هذه 00000000-0000-0000-0000-000000000000 أفعل Y

هل هناك طريقة أكثر أناقة ثم عد حتى الأصفار؟

وشكرا مقدما

هل كانت مفيدة؟

المحلول

ومقارنة

cast(cast(0 as binary) as uniqueidentifier)

نصائح أخرى

ومجرد إنشاء متغير EmptyGuid ومقارنتها بما يلي:

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

وهذا يعمل أيضا.

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

وأفضل حل هو استخدام ثابت لGUID فارغ

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

وOR

DECLARE @EmptyGuid UNIQUEIDENTIFIER
SET @EmptyGuid = 0x0

وكنت للتو مقارنتها

IF @parameter = @EmptyGuid
    DO Y
ELSE
    DO X

ملحوظة: لا تحتاج إلى استخدام قوالب والمتحولين

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top