2009-12-18 21 views
15

Tôi nhận được một uniqueidentifier vào Quy trình được lưu trữ trông giống như thế nàyLàm thế nào để xác định một bộ định danh duy nhất trống trong SQL Server 2005?

00000000-0000-0000-0000-000000000000.

Điều này có vẻ như là một điều đơn giản, nhưng làm cách nào để xác định rằng đây là số trống uniqueidentifier?

Nếu tôi nhận được một giá trị như DDB72E0C-FC43-4C34-A924-741445153021 này tôi muốn làm X

Nếu tôi nhận được một giá trị như 00000000-0000-0000-0000-000000000000 này tôi làm Y

Có một cách thanh lịch hơn sau đó đếm lên số không?

Cảm ơn trước

Trả lời

31

so sánh với

cast(cast(0 as binary) as uniqueidentifier) 

?

+0

Bạn tôi là thiên tài! – codingguy3000

+0

Thanh lịch. 1 cho bạn Sir. – Meff

4

Chỉ cần tạo một biến EmptyGuid và so sánh với rằng:

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

cũng này hoạt động.

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

Câu hỏi đặt ra là SQL Server 2005 của bạn sẽ hoạt động từ năm 2008 trở lên. – bummi

1

giải pháp tốt nhất là sử dụng một hằng số cho GUID trống

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

HOẶC

DECLARE @EmptyGuid UNIQUEIDENTIFIER 
SET @EmptyGuid = 0x0 

và bạn chỉ cần so sánh chúng

IF @parameter = @EmptyGuid 
    DO Y 
ELSE 
    DO X 

Lưu ý: bạn don' t cần sử dụng phôi và chuyển đổi

Các vấn đề liên quan