17

我正在uniqueidentifier进入一个看起来像这样的存储过程

00000000-0000-0000-0000-000000000000.

这似乎是一件简单的事情,但如何确定这是一个空白uniqueidentifier

如果我得到这样的值,DDB72E0C-FC43-4C34-A924-741445153021我想做 X

如果我得到这样的值,00000000-0000-0000-0000-000000000000我会做 Y

有没有比数零更优雅的方法?

提前致谢

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 回答