【问题标题】:How do I check for the default value of a UNIQUEIDENTIFIER value in Azure SQL?如何在 Azure SQL 中检查 UNIQUEIDENTIFIER 值的默认值?
【发布时间】:2020-07-16 14:47:10
【问题描述】:

我有一个 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 语句中的条件始终为假。

Azure SQL 中UNIQUEIDENTIFIER 变量的默认值是什么?如何在其上设置IF

谢谢!

【问题讨论】:

  • 如果@EmailAddress 不存在SELECT [ID] FROM [dbo].[EmailAddresses] WHERE [EmailAddress]=@EmailAddress,你会在SSMS 中得到什么?

标签: sql-server tsql azure-sql-database


【解决方案1】:

我不知道,也找不到 UNIQUEIDENTIFIER 变量的默认值是什么。

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

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

所以

iF @ID is null
begin
 . . .

【讨论】:

  • 谢谢@大卫
【解决方案2】:

你可以稍微简化一下,只使用 NOT EXISTS

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

【讨论】:

    猜你喜欢
    • 2020-01-29
    • 2015-06-30
    • 1970-01-01
    • 2019-12-02
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多