MySQL IF () функция больше не работает - PullRequest
0 голосов
/ 23 октября 2019

У меня база данных работает уже более двух лет. Недавно я решил, что было бы неплохо изменить сопоставление всей схемы и всех таблиц на одну, отличную от 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, независимо от того, какие значения вы передаете ей. У кого-нибудь есть идеи почему?

...