17

uniqueidentifierこのようなストアドプロシージャを使用しています

00000000-0000-0000-0000-000000000000

これは単純なことのように思えますが、これが空白であることをどのように識別できますuniqueidentifierか?

このような値を取得した場合、DDB72E0C-FC43-4C34-A924-741445153021Xを実行したい

このような値を取得した場合、00000000-0000-0000-0000-000000000000Yを実行します

ゼロを数えるよりもエレガントな方法はありますか?

前もって感謝します

4

5 に答える 5

34

と比較する

cast(cast(0 as binary) as uniqueidentifier)

于 2009-12-18T22:06:52.700 に答える
4

EmptyGuid変数を作成し、それと比較するだけです。

DECLARE @EmptyGuid UniqueIdentifier
SET @EmptyGuid = '00000000-0000-0000-0000-000000000000'
于 2009-12-18T22:11:30.800 に答える
3
IF (@TheGuid = '00000000-0000-0000-0000-000000000000')
    SELECT 'Do Y'
ELSE
    SELECT 'Do X'
于 2009-12-18T22:12:54.567 に答える
1

これも機能します。

DECLARE @EmptyGuid UNIQUEIDENTIFIER = CONVERT(UNIQUEIDENTIFIER, 0x0);  
SELECT @EmptyGuid
于 2014-11-11T14:25:49.720 に答える
1

最善の解決策は、空のGUIDに定数を使用することです

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

また

DECLARE @EmptyGuid UNIQUEIDENTIFIER
SET @EmptyGuid = 0x0

そしてあなたはそれらを比較するだけです

IF @parameter = @EmptyGuid
    DO Y
ELSE
    DO X

注:キャストや変換を使用する必要はありません

于 2015-11-13T14:38:34.660 に答える