Mei*_*ude 99
SELECT CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)
Run Code Online (Sandbox Code Playgroud)
这应该返回你的空guid.
...甚至更短,节省一个演员:
SELECT CAST(0x0 AS UNIQUEIDENTIFIER)
Run Code Online (Sandbox Code Playgroud)
所以要检查一下,你会这样做
IF @GuidParam = CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)
BEGIN
--Guid is empty
END
Run Code Online (Sandbox Code Playgroud)
Tho*_*mas 12
由于空guid永远不会改变,另一个显而易见的方法是简单地使用00000000-0000-0000-0000-000000000000而不是计算它.
If @Param = '00000000-0000-0000-0000-000000000000'
...
Run Code Online (Sandbox Code Playgroud)
或者,如果在过程中,您可以设置一个参数作为常量:
Declare @EmptyGuid uniqueidentifier
Set @EmptyGuid = '00000000-0000-0000-0000-000000000000'
Run Code Online (Sandbox Code Playgroud)
或者您可以创建一个标量用户定义函数,它只返回上面的常量值(或者像在Meiscooldude解决方案中那样重新计算).
DECLARE @EmptyGuid UNIQUEIDENTIFIER = 0x0
DECLARE @NonEmpty UNIQUEIDENTIFIER = NEWID()
IF @EmptyGuid = 0x0 PRINT 'Empty'
IF @NonEmpty = 0x0 PRINT 'Empty' ELSE PRINT 'NonEmpty'
Run Code Online (Sandbox Code Playgroud)
会打印
空的
非空