在SQL中检查空GUID

时间:2010-06-22 12:22:34

标签: sql-server tsql

如何检查存储过程中的参数是否为空GUID?

7 个答案:

答案 0 :(得分:96)

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

答案 1 :(得分:12)

由于空guid永远不会改变,另一个显而易见的方法是简单地使用00000000-0000-0000-0000-000000000000而不是计算它。

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

或者,如果在一个过程中,您可以设置一个参数作为常量:

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

或者你可以创建一个标量的用户定义函数,它只返回上面的常量值(或者像在Meiscooldude解决方案中那样重新计算)。

答案 2 :(得分:1)

如果检查它是空的:

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

答案 3 :(得分:0)

使用

DECLARE @param UNIQUEIDENTIFIER = NEWID();
--DECLARE @param UNIQUEIDENTIFIER = '00000000-0000-0000-0000-000000000000'

IF (CONVERT(UNIQUEIDENTIFIER, 0x00)) = @param
    PRINT 'Empty';
ELSE
    PRINT 'Not Empty';

答案 4 :(得分:0)

DECLARE @EmptyGuid UNIQUEIDENTIFIER = 0x0
DECLARE @NonEmpty UNIQUEIDENTIFIER = NEWID()
IF @EmptyGuid = 0x0 PRINT 'Empty'
IF @NonEmpty = 0x0 PRINT 'Empty' ELSE PRINT 'NonEmpty'

将打印

非空

答案 5 :(得分:0)

您可以像这样制作Empty Guid:

DECLARE @EmptyGuid UNIQUEIDENTIFIER
SET @EmptyGuid = (SELECT CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER))

-- Single result is 00000000-0000-0000-0000-000000000000
SELECT @EmptyGuid

答案 6 :(得分:-2)

DECLARE @SupplierDataHubId  uniqueidentifier=null

 set @SupplierDataHubId=(select HubId from dbo.tblSupplierData where fldUpc='603259049389' OR   fldEan='6032590493895555')
if (@SupplierDataHubId is not null)
 begin                 
 print('yes');
end

else 
print 'no'