MySQL IF()函数不再起作用

问题描述 投票:0回答:1

我有一个运行了两年以上的数据库。最近,我认为将整个架构和所有表的排序规则更改为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,无论您传递给它什么值。有谁知道为什么吗?

mysql if-statement stored-procedures collation
1个回答
0
投票

我不相信这一点!修改此:

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

对此

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

已解决问题。有谁知道为什么吗?

© www.soinside.com 2019 - 2024. All rights reserved.