【问题标题】:SQL: @somevalue = null is not working properlySQL:@somevalue = null 无法正常工作
【发布时间】:2012-10-17 10:16:45
【问题描述】:

我尝试了 @somevalue = null 并且它当时有效。但现在它不起作用。如何检查值是否为空? 简而言之,我需要做的是如果 @existPerson 等于 null 然后将值插入到数据库中。但如果存在则返回-2。我检查了数据库,确保没有与@nic = 100 相同的值。即使如此,它也返回了我-2。可能的原因是什么?非常感谢!

CREATE PROCEDURE [dbo].[addStudent] 
    @stuName varchar(50), 
    @address varchar(100),
    @tel varchar(15),
    @etel varchar(15),
    @nic varchar (10),
    @dob date


AS 
BEGIN   
    SET NOCOUNT ON;

    DECLARE @currentID INT
    DECLARE @existPerson INT
    SET @existPerson = (SELECT p_ID FROM Student WHERE s_NIC = @nic);
    IF @existPerson = null
        BEGIN
            INSERT INTO Person (p_Name, p_RegDate, p_Address, p_Tel, p_EmergeNo, p_Valid, p_Userlevel)
            VALUES (@stuName,  GETDATE(), @address, @tel, @etel, 0, 'Student' );
            SET @currentID = (SELECT MAX( p_ID) FROM Person); 
            INSERT INTO Student (p_ID, s_Barcode, s_DOB, s_NIC) VALUES (@currentID , NULL, @dob, @nic);
            return 0;
        END
    ELSE
        return -2;
END 

【问题讨论】:

  • 我喜欢将 null 视为“未知”——即使它是另一个 null,您也永远不知道是否有任何相同之处。因此,您无法将其与 equals 进行比较,以及为什么特殊的 IS NULL 构造。
  • 如果对你有用,别忘了点赞并将其标记为已接受

标签: sql stored-procedures if-statement null


【解决方案1】:

这应该是

  IF @existPerson is null

在 sql 中,如果您想检查值是否为空,请使用 is nullis not null 而不是 = null<> null

【讨论】:

    【解决方案2】:

    您无法将某些东西与带有= 符号的null 进行比较。它将永远是unknown。为此,您必须使用 IS 运算符:

    IF @existPerson IS null
    

    【讨论】:

      【解决方案3】:

      例如:-

      SELECT p_ID FROM Student WHERE s_NIC IS NULL
      

      【讨论】:

        【解决方案4】:
         if @existsperson is null
           insert(...)
         else
             return -2;
        

        【讨论】:

          【解决方案5】:

          其他方式,ISNULL ( check_expression , replacement_value )

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-10-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多