Как написать функцию MySQL, которая ссылается на поле из таблицы? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть SQL:

SELECT * FROM table WHERE col_1 = a OR col_2 = a OR col_3 = a

Я не хочу много печатать col_1 = a OR col_2 = a OR col_3 = a, поэтому я создаю функцию:

CREATE FUNCTION is_col_equal(a VARCHAR(20))
  RETURNS BOOLEAN
  RETURN col_1 = a or col_2 = a or col_3 = a

Но когда я выполняю SELECT * FROM table WHERE is_col_equal(a), это дает Unknown column 'col_1' in 'field list'.

Итак, как написать функцию MySQL, которая ссылается на поле из таблицы?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете сослаться на столбец. Но вы должны определить, что делает функция. Если вы хотите, чтобы функция возвращала значение, если любой из трех столбцов равен a, то вы можете вычислить это как значение и вернуть его:

CREATE FUNCTION is_col_equal(in_a VARCHAR(20))
RETURNS BOOLEAN
BEGIN
    SELECT @bool = MAX(col_1 = in_a or col_2 = in_a or col_3 = in_a)
    FROM t;
    RETURN @bool
END;

Что MySQL не может сделать, так это вернуть строки, соответствующие вашему условию. Это не является вашим намерением, учитывая, что вы объявляете функцию, возвращающую скалярное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...