Sql server 如何在Azure SQL中检查UNIQUEIDENTIFIER值的默认值?

Sql server 如何在Azure SQL中检查UNIQUEIDENTIFIER值的默认值?,sql-server,tsql,azure-sql-database,Sql Server,Tsql,Azure Sql Database,我有一个Azure SQL数据库。在这个数据库中,我有一个存储过程,负责插入电子邮件地址。我需要从表中获取电子邮件地址的ID。如果电子邮件地址不存在,我需要在表中创建新记录并获取ID。为此,我目前有: DECLARE @ID UNIQUEIDENTIFIER; SELECT @ID=[ID] FROM [dbo].[EmailAddresses] WHERE [EmailAddress]=@EmailAddress -- Identify if a new email address need

我有一个Azure SQL数据库。在这个数据库中,我有一个存储过程,负责插入电子邮件地址。我需要从表中获取电子邮件地址的ID。如果电子邮件地址不存在,我需要在表中创建新记录并获取ID。为此,我目前有:

DECLARE @ID UNIQUEIDENTIFIER;
SELECT @ID=[ID] FROM [dbo].[EmailAddresses] WHERE [EmailAddress]=@EmailAddress

-- Identify if a new email address needs to be created
IF @ID = CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)
BEGIN
    PRINT N'Insert a new record into EmailAddresses. Then, assign the ID variable'
    PRINT N'I never get here'
END
我知道如何在表中插入记录。我的问题是,
IF@ID..
的行。我不知道,也找不到
UNIQUEIDENTIFIER
变量的默认值。因此,我的
IF
语句中的条件总是false

Azure SQL中
UNIQUEIDENTIFIER
变量的默认值是什么?如何对其执行
IF

谢谢大家!

我不知道,也找不到UNIQUEIDENTIFIER变量的默认值

空。所有TSQL变量都可以为NULL,并且默认为NULL

SELECT语句中的变量赋值将为结果中的每一行赋值。如果结果中没有行,则变量的值不会更改

所以


你可以把它简化一点,只使用“不存在”

IF NOT EXISTS(SELECT [ID] FROM [dbo].[EmailAddresses] WHERE [EmailAddress]=@EmailAddress)
BEGIN
    PRINT N'Insert a new record into EmailAddresses. Then, assign the ID variable'
    PRINT N'I never get here'
END

如果
@EmailAddress
不存在,
从[dbo].[EmailAddress]中选择[ID],其中[EmailAddress]=@EmailAddress
,您在SSMS中会得到什么?谢谢@David
IF NOT EXISTS(SELECT [ID] FROM [dbo].[EmailAddresses] WHERE [EmailAddress]=@EmailAddress)
BEGIN
    PRINT N'Insert a new record into EmailAddresses. Then, assign the ID variable'
    PRINT N'I never get here'
END