2010-06-22 225 views

回答

74
SELECT CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER) 

這應該返回您的空guid。

...甚至更短,節省了一個投:

SELECT CAST(0x0 AS UNIQUEIDENTIFIER) 

所以要檢查的是,你會做

IF @GuidParam = CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER) 
BEGIN 
    --Guid is empty 
END 
+25

您可以使用此替代語法來得到一個空的GUID CAST(AS爲0x0 UNIQUEIDENTIFIER) – Robert 2013-02-04 14:58:08

+0

@Robert +1使用爲0x0,而不是2個轉換。 – twoleggedhorse 2013-02-06 16:56:01

+1

這個有什麼更好的性能或者檢查「if @Param ='00000000-0000-0000-0000-000000000000'?」 – 2015-09-15 17:23:21

9

由於空GUID永遠不會改變,其他顯而易見的方法是簡單地使用00000000-0000-0000-0000-000000000000而不是計算它。

If @Param = '00000000-0000-0000-0000-000000000000' 
... 

或者,如果在一個過程中,可以設置一個參數作爲一個常數:

Declare @EmptyGuid uniqueidentifier 
Set @EmptyGuid = '00000000-0000-0000-0000-000000000000' 

或者可以創建一個標量用戶定義函數,它簡單地返回上述恆定值(或重新計算它在Meiscooldude解決方案)。

1

有關檢查它是什麼空:

DECLARE @MyId as UNIQUEIDENTIFIER = (SELECT Id FROM dbo.MyTable WHERE ...) 
IF @MyId IS NULL 
BEGIN 
    RAISERROR ('Id is NULL!', 16, 1) 
    RETURN 
END 
0

DECLARE @SupplierDataHubId唯一標識符= NULL

集@ SupplierDataHubId =(從dbo.tblSupplierData選擇HubId其中fldUpc = '603259049389' OR fldEan ='6032590493895555 ') if(@SupplierDataHubId is not null) begin
print('yes'); 結束

其他 打印 '不'