MySQL IF()函数不再起作用

时间:2019-10-23 14:58:30

标签: mysql if-statement stored-procedures collation

我有一个运行了两年以上的数据库。最近,我认为将整个架构和所有表的排序规则更改为utf8_general_ci以外的其他规则是一个好主意。在那之后不久,我收到了用户的投诉,随后我恢复了对模式所做的所有更改,并认为我可以轻松入睡。但是过了一会儿,我又收到其他投诉,并且开始努力找出问题所在,我也是。

事实证明,其中一个存储过程中的一条语句未返回期望的结果。就像这样:

    SELECT
        A, -- BIGINT(24)
        B, -- BIGINT(24)
        C, -- BIGINT(24)
        D, -- ENUM('VALUE_A', 'VALUE_B', 'VALUE_C')
    INTO
        @W, @X, @Y, @Z
    FROM
        `my_table`
    WHERE
        some_field = in_sproc_param; -- in_sproc_param (IN VARCHAR(64)) -> parameter to the stored procedure

    SET @T = @W + @X;

    SET @Q = IF(@Z <> 'VALUE_C' AND @T >= @Y, 'TRUE', 'FALSE');
    -- '

IF()函数始终返回FALSE,无论您传递给它什么值。有谁知道为什么吗?

0 个答案:

没有答案