【问题标题】:Condition expression in MySQL Stored ProcedureMySQL存储过程中的条件表达式
【发布时间】:2020-02-04 14:14:29
【问题描述】:

好吧,这个快把我逼疯了。以下是我的 MySQL 存储过程的一部分:

  1. 这个工作正常

    IF (@prevfldSubDepartmentID != paramSubDepartmentID) THEN statements; END IF;

  2. 但是这个没有

    IF ((@prevfldSubDepartmentID IS NULL) OR (@prevfldSubDepartmentID != paramSubDepartmentID)) THEN statements; END IF;

仅当 @prevfldSubDepartmentID 为 NULL 时才会出错:

ErrorCode   1064
Message     You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1
SQLState    42000 

我想知道这可能有什么问题。我可能错过了一些非常基本的东西。有人看到第二个代码有什么问题吗?

【问题讨论】:

    标签: mysql stored-procedures


    【解决方案1】:

    尝试使用

    ISNULL(@prevfldSubDepartmentID,0) = 0
    

    编辑;感谢您的反对,快速谷歌搜索 MYSQL ISNULL 发现这是 MySQL 的等价物:

    ISNULL(expression)
    

    【讨论】:

    • 这里的 DBMS 是 MySQL 而不是 SQL Server
    • 不熟悉 MySql 的内置函数,认为它会有一个等价物。重点不是直接检查 NULL,而是使用内置函数将 Null 值转换为数据类型并检查。
    • 当您弄清楚如何使用它时,请随意删除反对票并接受;)
    • 你是如何尝试的?你应该使用IF (ISNULL(@prevfldSubDepartmentID) = 0 OR (@prevfldSubDepartmentID != paramSubDepartmentID))
    • 很奇怪。根据需要我需要使用 - (ISNULL(@prevfldSubDepartmentID) = 1 OR (@prevfldSubDepartmentID != paramSubDepartmentID)) 而不是 IF (ISNULL(@prevfldSubDepartmentID) = 0 OR (@prevfldSubDepartmentID != paramSubDepartmentID)) 否?
    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 2016-12-23
    • 2016-06-27
    相关资源
    最近更新 更多